在ASP中获取复选框值..NET MVC动作

本文关键字:NET MVC 动作 复选框 ASP 获取 | 更新日期: 2023-09-27 18:14:40

我正在做一个ASP。我的表单模型如下所示:

public class ViewModel
{
    public bool IsActive { get; set; }
}

在我的表单中,我有以下HTML:

<label class="checkbox pull-left">
   <input type="checkbox" id="IsActive" name="IsActive" data-val="true" data-val-required="The IsActive field is required.">
   <i></i>Active/Deactive
   <input name="IsActive" type="hidden">
</label>

当我发布表单时,模型中的IsActive值总是为false。然而,模型中的Name属性有一个值。我通过在下面设置一个断点进行了测试:

[HttpPost]
public ActionResult MyAction(ViewModel model)
{
    // model.IsActive always is false
}

为什么不设置复选框的值?

我该怎么做来解决这个问题?

在ASP中获取复选框值..NET MVC动作

您没有在复选框或其相关的隐藏输入中设置value属性,因此没有值被张贴,您的属性的值是其默认值(false)。必须是

<label class="checkbox pull-left">
    <input type="checkbox" id="IsActive" name="IsActive" value="true" ....>
    <i></i>Active/Deactive
    <input name="IsActive" type="hidden" value="false">
</label>

旁注:是否有任何原因你不使用@Html.CheckBoxFor(m => m.IsActive)来生成正确的html?

您必须设置复选框的value attr来获取该值

data-val是不同的,不作为值attr在HTML或MVC

我建议您使用razor和@Html.CheckBoxFor(m => m.IsActive)