来自viewmodel的Bool在帖子上的MVC动作中没有绑定

时间:2014-03-31 19:59:05

标签: c# asp.net-mvc formcollection

我有一个以TestStrTestBool作为属性的视图模型。如果我提交表单,则只有TestStr值被设置为绑定视图模型,而不是TestBoolTestBool的表单集合中的值设置为"on",问题是什么?是否应将其设置为true才能将其标记为true?

我的c#视图模型:

public class MyViewModel { 
  public bool TestStr { get; set; }
  public bool TestBool { get; set; }
}

我的剃刀视图,在表格中:

<input name="TestStr" value="this is getting set in my MVC action" />
<input name="TestBool" checked=checked /> // this always gets set to false, even tho it's checked

我的MVC行动:

public ActionResult(MyViewModel vm) {
  // vm.TestBool is always false
}

我注意到,如果我使用@Html.CheckBoxFor(...),它会在我的MVC操作中正确绑定它。是否可以使用键入的html执行此操作?只因为我有一些我正在使用的集合,所以我不得不为每个集合提供输入名称。

1 个答案:

答案 0 :(得分:0)

因为如果没有选中复选框,复选框就不会回发。 HTML帮助程序实际上为未经检查的版本添加了一个隐藏字段,然后正确解决了冲突(已选中/未选中)。

如果您想保留其他字段,但又不想显示它们,可以使用Html.HiddenFor来保存这些值。

这篇文章显示了same issue

的人