我有一个包含字典的视图模型“MyClass”:
Dictionary<string, bool> columns {get; set;}
它有键和值
columns.Add("Name", true);
columns.Add("Type", true);
现在,我想让用户编辑MyClass及其字典。
对于每个键我想显示其键并启用以检查\取消其值(true \ false),以便输入的名称将是正确的名称进行编辑。由于字典有很多键,我需要用“foreach”或“for”来表示。
我该怎么做?
答案 0 :(得分:0)
答案 1 :(得分:0)
你需要在你的视图中写下这样的东西
@using (Html.BeginForm()) {
<fieldset>
<legend>MyClassViewModel</legend>
@foreach (var item in Model.Columns){
@Html.Label(item.Key)
@Html.CheckBox(item.Key, item.Value)
}
<p>
<input type="submit" value="Save" />
</p>
</fieldset>
}
在这种情况下,您的视图必须绑定到模型
@model MvcDemoApp.Models.MyClassViewModel
或作为替代
@foreach (var item in Model.Columns)
{
@item.Key
<input type="checkbox" id="@item.Key" checked="@item.Value" />
<input type="hidden" value="@item.Value" />
<br />
}
或尝试使用社区
的CheckBoxList自定义帮助程序http://weblogs.asp.net/gunnarpeipman/archive/2011/05/05/asp-net-mvc-implementing-checkboxlist.aspx
http://www.codeproject.com/Articles/292050/MVC3-Html-CheckBoxList-custom-extension
答案 2 :(得分:0)
在你的情况下你需要这样的东西,默认的绑定器要理解name=""
格式:
<input type="checkbox" name="columns[0].Value" value="Key0 string value" />
<input type="checkbox" name="columns[1].Value" value="Key1 string value" />
不幸的是,默认帮助程序并不完全支持这一点,因此您必须明确地编写name=""
。类似的东西:
@Html.CheckBox("columns[" + i + "].Value", new { value = columns[i].Key });
在this博客文章中了解有关这类绑定的更多信息。