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

标签 c# asp.net-mvc-4

我正在开发 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>

当我发布表单时,模型中的 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/

相关文章:

c# - Entity Framework 中的 NoLock

c# - 从 Controller 回发后保留 ASP MVC FormCollection 值

c# - 将节点添加到特定的子节点

c# - 显示最近查看的项目

c# - 剑道 ui 调度程序 : Creating Complex Event Templates

c# - 我将如何在 mvc 4 中将以下语句的值设置为零

javascript - 将 Razor 代码分配给 JavaScript 变量时出现意外标记非法

c# - 如何在 C# 中从 Oracle SQL Developer 检索 'Other Users' 的列表?

c# - 如何在构建/部署时忽略 servicefabric list 文件中的服务类型

c# - NetworkStream.DataAvailable 更新缓慢