【问题标题】:Checkbox value not getting in controller even it's checked asp.net mvc即使检查了 asp.net mvc,复选框值也没有进入控制器
【发布时间】:2014-10-30 15:25:02
【问题描述】:

我正在 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 插件,它显示此复选框,如下所示:

勾选(Yes)后生成的html代码如下:

未选中(否)时为其生成的html代码如下:

现在的问题是,当我使用此复选框打开表单时,最初复选框会正确显示,并且当我只选中/取消选中 chekcbox 一次时,一切正常。意味着如果最初选中复选框并且我将其取消选中,则保存数据然后它返回未选中(false),这是正确的。但是假设复选框最初被选中并且我将其取消选中,我再次选中,这次保存数据而不是复选框被选中,它返回未选中(假)。还假设复选框最初未选中并且我将其选中,再次我未选中,这次保存数据复选框未选中(假)。 真奇怪不知道是什么问题。

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

【问题讨论】:

  • 这与css无关
  • 在这两种情况下,复选框的值都设置为“true”。这是由开关 javascript 设置的吗?
  • 查看 POST 中发送了什么值
  • 感谢大家的回复。 @matt-dot-net 我在控制器的 Request 对象中看到了发布的值,假设最初复选框未选中,我检查了它,然后发布的值是 ENABLED=true&ENABLED=false 我的视图模型也为 ENABLED 正确绑定,仅用于第一次更改它是正确的。这里第一个值是复选框,第二个值是隐藏字段。但是假设最初复选框未选中并且我选中了它,再次未选中并选中它,甚至选中了启用的复选框,它发布了 ENABLED = false。我真的很沮丧,不知道为什么会这样。

标签: jquery asp.net-mvc checkbox


【解决方案1】:

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

@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) { /*[...]*/ }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-05-10
    • 1970-01-01
    • 2015-11-07
    • 1970-01-01
    • 1970-01-01
    • 2012-12-31
    • 2017-12-14
    相关资源
    最近更新 更多