一尘不染

在ASP.NET MVC 4中获取复选框值

c#

我正在开发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">&nbsp;Remember Me?</label>

发布表单时,模型中的“记住”值始终为false。但是,模型中的Name属性具有一个值。我已经通过在以下位置设置断点进行了测试:

[HttpPost]
public ActionResult MyAction(MyModel model)
{
  Console.WriteLine(model.Remember.ToString());
}

我不知道。为什么未设置Checkbox值?


阅读 765

收藏
2020-05-19

共1个答案

一尘不染

@Html.EditorFor(x => x.Remember)

将产生:

<input id="Remember" type="checkbox" value="true" name="Remember" />
<input type="hidden" value="false" name="Remember" />

它是如何工作的:

  • 如果checkbox未选中,则表单仅提交hidden值(假)
  • 如果选中,则表单true将为模型的bool属性提交两个字段(false和true)和MVC集

<input id="Remember" name="Remember" type="checkbox" value="@Model.Remember" />

如果选中,它将始终发送默认值。

2020-05-19