我正在开发一个 ASP.NET MVC 4 应用程序.这个应用程序有一个基本的形式.我的表单模型如下所示:
I'm working on an ASP.NET MVC 4 app. This app has a basic form. The model for my form looks like the following:
public class MyModel { public string Name { get; set; } public bool Remember { get; set; } }在我的表单中,我有以下 HTML.
In my form, I have the following 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>当我发布表单时,模型中的记住值始终为假.但是,模型中的 Name 属性有一个值.我已经通过在以下设置断点对此进行了测试:
When I post the form, the Remember value in the model is always false. However, the Name property in the model has a value. I've tested this by setting a breakpoint in the following:
[HttpPost] public ActionResult MyAction(MyModel model) { Console.WriteLine(model.Remember.ToString()); }我想不通.为什么未设置 Checkbox 值?
I can't figure it out. Why isn't the Checkbox value getting set?
推荐答案 @Html.EditorFor(x => x.Remember)将产生:
<input id="Remember" type="checkbox" value="true" name="Remember" /> <input type="hidden" value="false" name="Remember" />它是如何工作的:
- 如果 checkbox 保持未选中状态,则表单仅提交 hidden 值 (false)
- 如果选中,则表单提交两个字段(false 和 true)和 MVC 集true 表示模型的 bool 属性
- If checkbox remains unchecked, the form submits only the hidden value (false)
- If checked, then the form submits two fields (false and true) and MVC sets true for the model's bool property
<input id="Remember" name="Remember" type="checkbox" value="@Model.Remember"/>
如果选中,这将始终发送默认值.
This will always send the default value, if checked.
更多推荐
在 ASP.NET MVC 4 中获取复选框值
发布评论