复选框值没有进入控制器,即使它已经检查了asp.net mvc

时间:2014-10-30 15:25:03

标签: jquery asp.net-mvc checkbox

我在ASP.Net MVC中开发应用程序并在控制器中获取错误的复选框值。我正在使用以下代码在视图中显示复选框:

@Html.CheckBox("ENABLED", new { @class = "checkSwitch", @checked = "checked" })

模型类中的相关属性是这个

public Nullable<bool> ENABLED { get; set; }

我在这里http://labs.lukepeters.me/iphone-checkbox-switch/使用jquery插件,显示如下所示的复选框:

enter image description here

检查时为其生成的html代码(是)是这样的:

enter image description here

未选中时为其生成的html代码(否)是这样的:

enter image description here

现在的问题是,当我打开带有此复选框的表单时,最初复选框显示正确,当我只检查/取消选中chekcbox时,所有工作正常。意味着如果最初检查复选框并且我取消选中它,保存数据然后返回unchecked(false),这是正确的。但是假设最初检查复选框并且我取消选中它,再次检查,检查,这次保存数据而不是复选框被选中,它返回未选中(false)。另外假设最初取消选中复选框并且我进行了检查,我再次取消选中,此时保存数据复选框未选中(false)。 真的很奇怪,不知道是什么问题。

任何帮助都非常有帮助。感谢.....

1 个答案:

答案 0 :(得分:0)

如果您使用具有强类型视图的模型,请尝试将您的剃刀更改为:

@model YourModel
<!-- [...] Html Content [...] -->
@Html.CheckBoxFor(m => m.ENABLED, new { @class = "checkSwitch", @checked = "checked" })

然后,在你的控制器内,动作应该是这样的:

[HttpPost]
public ActionResult PostMethod(YourModel model)
{
    var isChecked = model.ENABLED;
    // [...]
}

或者,您可以尝试另一种方法:

public ActionResult PostMethod(bool ENABLED) { /*[...]*/ }