1

我有一个包含字典的视图模型“MyClass”:

 Dictionary<string, bool> columns {get; set;}

它有键和值

 columns.Add("Name", true);
 columns.Add("Type", true);

现在,我想让用户编辑 MyClass 及其字典。

对于每个键,我想显示它的键并启用检查\取消检查它的值 (true\false),这样输入的名称将是编辑的正确名称。由于字典有很多键,我需要用“foreach”或“for”来处理它。

我怎样才能做到这一点?

4

3 回答 3

0

您可以从http://www.asp.net/mvc/tutorials/mvc-music-store/mvc-music-store-part-1开始

于 2012-04-29T09:24:01.500 回答
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 });

在此博客文章中阅读有关此类绑定的更多信息。

于 2012-04-29T11:31:52.693 回答
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

于 2012-04-29T09:57:17.483 回答