【问题标题】:How to bind multiple check-boxes values to a property of the model in Mvc?如何将多个复选框值绑定到 Mvc 中模型的属性?
【发布时间】:2014-09-04 12:20:05
【问题描述】:
 @Html.CheckBox("WiFi", @Model.Amenities.Contains("WiFi"))
  @Html.CheckBox("Dining", @Model.Amenities.Contains("Dining"))

使用这种格式,我可以从 sql server 获取值,但无法将它们与属性绑定。

这看起来很奇怪,但我将便利设施属性的值直接输入到数据库中。我只想使用 html 助手。

【问题讨论】:

  • 您的模型是否有属性bool WiFibool Dining?我想你可能误解了@Html.CheckBox
  • 我在模型中只有一个属性,即“便利设施”复选框。我想将这些复选框的所有值绑定到便利设施。
  • 你想要的是单选按钮 - 我会尽快发布答案
  • 实际上我正在做一个关于 mvc 的旧项目。我的前辈已经实现了“复选框”类型的输入字段。我想改用 html 助手。使用输入字段,他能够获取所有选中复选框的值并将它们存储到“字符串便利{get; set;}”中。 db 中的字段是字符串类型。我们没有使用 bool。
  • 是的,我知道。稍后检查我的答案(复选框用于绑定到布尔值)

标签: asp.net asp.net-mvc asp.net-mvc-3 asp.net-mvc-4


【解决方案1】:

如果您想将一系列可能的值绑定到属性Amenities,请使用单选按钮(复选框用于绑定到布尔值)

@Html.RadioButtonFor(m => m.Amenities, "WiFi")<span>WiFi</span>
@Html.RadioButtonFor(m => m.Amenities, "Dining")<span>Dining</span>
// More radio buttons for other possible values that you want to set for Amenities

这将创建一系列单选按钮,允许您从其中一个选项(“WiFi”、“餐饮”等)中设置 Amenities 的值,如果 Amenities 的初始值是“餐饮” ,当视图被渲染时,第二个单选按钮将被选中

PS。始终使用强类型版本的 html 助手 - @Html.CheckBoxFor(),而不是 @Html.CheckBox()

【讨论】:

  • 但是这样我不能同时选择它们。它们应该以字符串的形式存储。
  • 在这种情况下,您需要 @Html.ListBoxFor()SelectList 以允许您选择多个值,或在视图模型 bool IsWiFibool IsDining 等中创建一系列属性,以便它们可以绑定到复选框,或手动从FormCollection 中提取复选框值并按照您当前必须执行的方式构建字符串
  • 我没有 bool Wifi。我有字符串设施,其中将存储已勾选的值。
  • 我知道,但您不了解模型绑定的工作原理。您不能绑定到不存在的属性! @Html.CheckBox("WiFi", ..) 创建 &lt;input type="checkbox" name="WiFi" ..&gt; 请注意名称属性(“WiFi”)。当此回帖时,它会尝试在您的模型中查找名称为 WiFi 的属性,该属性不存在,因此没有任何约束。您的选择是使用 javascript 动态创建值或使用 FormCollection 检查键并手动创建“设施”的字符串
  • 这就是我试图找出其他方法的原因。我有 22 个复选框,我不想在模型中创建 22 个布尔属性。可能我只能使用项目早期使用的输入字段选项。但无论如何感谢您的帮助。
猜你喜欢
  • 1970-01-01
  • 2018-07-24
  • 1970-01-01
  • 2011-12-20
  • 2018-12-10
  • 1970-01-01
  • 1970-01-01
  • 2011-11-09
  • 2013-03-06
相关资源
最近更新 更多