0

我有一个具有TestStrTestBool作为属性的视图模型。如果我提交表单,只有TestStr值被设置为绑定视图模型,而不是TestBool. 表单集合中的值TestBool设置为"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 来执行此操作?只是因为我有一些正在使用的集合,所以我必须为每个集合提供输入名称。

4

1 回答 1

0

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

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

这篇文章显示了有同样问题的人

于 2014-03-31T20:02:45.627 回答