ASP.NET MVC でのディクショナリ値のバインドは一般に単純ですが、バインドを成功させるには特定の構文規則に従う必要があります。
モデル クラスで、辞書属性を定義し、次の値で初期化する必要があります:
<code class="language-csharp">public class MyModel { public Dictionary<string, string> Params { get; set; } public MyModel() { Params = new Dictionary<string, string>(); Params.Add("Value1", "1"); Params.Add("Value2", "2"); Params.Add("Value3", "3"); } }</code>
ビューで、次の構文を使用して辞書のキーと値をバインドします:
<code class="language-html">@foreach (KeyValuePair<string, string> kvp in Model.Params) { <tr><td> @Html.TextBox("Params[" + kvp.Key + "]") </td> </tr> }</code>
この構文は、各入力フィールドの名前属性構造が「Params[key]」であることを保証し、モデル バインディングで使用されるインデクサー構文と一致します。
ASP.NET MVC 4 では、デフォルトのモデル バインダーは、一般的な辞書インデクサー構文 (property[key]) を使用して辞書をバインドします。したがって、次のタグは Dictionary<string, string>
に正常にバインドされます:
<code class="language-html">@foreach (var kvp in Model.MyDictionary) { <input type="checkbox" name="@string.Format("MyDictionary[{0}]", kvp.Key)" checked="@kvp.Value" /> }</code>
これにより、チェックボックスを辞書要素にバインドできるようになります。 checked="@kvp.Value"
は kvp.Value
がブール値であると想定していることに注意してください。 kvp.Value
が文字列の場合は、checked="@(kvp.Value == "true")"
を使用するなど、実際の状況に応じてコードのこの部分を調整する必要があります。
以上がASP.NET MVCで辞書を適切にバインドするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。