ラベルとチェックボックスのリストを表示するビューを定義したい場合、ユーザーはチェックボックスを変更してからポストバックできます。私は辞書をポストバックするのに問題があります。つまり、postメソッドのdictionaryパラメータはnullです。以下はバインド方法ASP.NET MVCでGETアクションとPOSTアクションの両方にディクショナリタイプのパラメータを設定します
は両方GETとPOSTアクションのためのアクションメソッドです:
public ActionResult MasterEdit(int id)
{
Dictionary<string, bool> kv = new Dictionary<string, bool>()
{
{"A", true},
{"B", false}
};
return View(kv);
}
[HttpPost]
public ActionResult MasterEdit(Dictionary<string, bool> kv)
{
return RedirectToAction("MasterEdit", new { id = 1 });
}
Beliwビューすべてのアイデアは非常に高く評価されるだろう
@model System.Collections.Generic.Dictionary<string, bool>
@{
ViewBag.Title = "Edit";
}
<h2>
MasterEdit</h2>
@using (Html.BeginForm())
{
<table>
@foreach(var dic in Model)
{
<tr>
@dic.Key <input type="checkbox" name="kv" value="@dic.Value" />
</tr>
}
</table>
<input type="submit" value="Save" />
}
です!
ダーリンディミトロフ、ご助言ありがとうございます。 MyViewModel.cshtmlに2つのIDが必要なのはなぜですか? – Pingpong
@ Pingpong、1つはテキストとして表示し、もう1つは隠しフィールドとして表示するので、ポストバック時にサーバーに送信され、ビューモデルが正しく埋められます。 –
ありがとうございました。できます。コントローラから表示するために渡されたデータが、コレクションを含むカスタムタイプの場合はどうなりますか?ありがとう! – Pingpong