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

あなたの場合、デフォルトのバインダーが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

http://www.asp.net/mvc/tutorials/mvc-music-store/mvc-music-store-part-1から開始できます

于 2012-04-29T09:24:01.500 に答える
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 に答える