【问题标题】:Getting Checkbox Value in ASP.NET MVC Action在 ASP.NET MVC 操作中获取复选框值
【发布时间】:2015-09-26 07:32:05
【问题描述】:

我正在开发一个 ASP.NET MVC 应用程序。我的表单模型如下所示:

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
}

为什么没有设置 Checkbox 值?

我应该怎么做才能解决这个问题?

【问题讨论】:

    标签: c# asp.net asp.net-mvc


    【解决方案1】:

    您没有在复选框或其关联的隐藏输入中设置 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 =&gt; m.IsActive) 来生成正确的 html?

    【讨论】:

      【解决方案2】:

      你必须设置复选框的值属性来获取值。

      data-val 不同,在 HTML 或 MVC 中均不用作 value attr

      【讨论】:

        【解决方案3】:

        我建议你使用razor 和@Html.CheckBoxFor(m =&gt; m.IsActive)

        【讨论】:

        • 通常最好在第一次尝试时详细说明答案,否则 OP 稍后会要求您提供相同的答案...
        猜你喜欢
        • 1970-01-01
        • 2020-07-07
        • 1970-01-01
        • 2011-10-19
        • 1970-01-01
        • 1970-01-01
        • 2014-08-31
        • 2016-01-13
        • 1970-01-01
        相关资源
        最近更新 更多