我正在开发 ASP.NET MVC 4 应用程序。这个应用程序有一个基本的形式。我的表单模型如下所示:
public class MyModel
{
public string Name { get; set; }
public bool Remember { get; set; }
}
在我的表单中,我有以下 HTML。
<input id="Name" name="Name" type="text" value="@Model.Name" />
<input id="Remember" name="Remember" type="checkbox" value="@Model.Remember" />
<label for="Remember"> Remember Me?</label>
当我发布表单时,模型中的 Remember 值始终为 false。但是,模型中的 Name 属性有一个值。我通过在下面设置断点来测试它:
[HttpPost]
public ActionResult MyAction(MyModel model)
{
Console.WriteLine(model.Remember.ToString());
}
我想不通。为什么未设置 Checkbox 值?
最佳答案
@Html.EditorFor(x => x.Remember)
将生成:
<input id="Remember" type="checkbox" value="true" name="Remember" />
<input type="hidden" value="false" name="Remember" />
它是如何工作的:
- 如果
checkbox
保持未选中状态,表单仅提交hidden
值(假) - 如果选中,则表单会提交两个字段(false 和 true)和 MVC 集
true
对于模型的bool
属性(property)
<input id="Remember" name="Remember" type="checkbox" value="@Model.Remember" />
如果选中,这将始终发送默认值。
关于c# - 在 ASP.NET MVC 4 中获取复选框值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14730746/