に変なものが見えますDropDownListFor
。これは私のビューの一部です:
1:<dt>
2: @Html.LabelFor(model => model.MainModel.DefaultAreaId)
3:</dt>
4:<dd>
5: @Html.DropDownListFor(model => model.MainModel.DefaultAreaId, Model.FKs["DefaultAreaId"].Items, new { @class = "Areadd" })
6: @Html.ValidationMessageFor(model => model.MainModel.DefaultAreaId, null, new { @class = "invalid-side-note" })
7:</dd>
コントローラーの最後の行をデバッグしてチェックインします。return View(model);
値Model.FKs["DefaultAreaId"].Items
は次のとおりです。
0: {Title="t1", value=13, Selected = false},
1: {Title="t2", value=15, Selected = false},
2: {Title="t3", value=17, Selected = false},
3: {Title="t4", value=16, Selected = true}
また、上記のビューの2行目で確認すると、値は同じですが、値の後の5行目の正確に次のDropDownListFor
ように変更します。
0: {Title="t1", value=13, Selected = false},
1: {Title="t2", value=15, Selected = false},
2: {Title="t3", value=17, Selected = false},
3: {Title="t4", value=16, Selected = false}
DropDownListFor
モデル値で何が起こるか理解できませんか? 私も同じビューで同じ方法を使用します:
11:<dt>
12: @Html.LabelFor(model => model.MainModel.DefaultControllerId)
13:</dt>
14:<dd>
15: @Html.DropDownListFor(model => model.MainModel.DefaultControllerId, Model.FKs["DefaultControllerId"].Items, new { @class = "Controllerdd" })
16: @Html.ValidationMessageFor(model => model.MainModel.DefaultControllerId, null, new { @class = "invalid-side-note" })
17:</dd>
そして、すべて問題ありません。名前も変更しますがDefaultAreaId
、何も変わりません。それで、これについて何か説明がありますか?ここで何が起こる?必要に応じて、View、Controller、および Model をすべてコピーできます。
アップデート
コントローラーで:
List<SelectListItem> Areas = new List<SelectListItem>();
Areas.Add(new SelectListItem { Text = "t1", Value = "13", Selected = false });
Areas.Add(new SelectListItem { Text = "t2", Value = "15", Selected = false });
Areas.Add(new SelectListItem { Text = "t3", Value = "17", Selected = false });
Areas.Add(new SelectListItem { Text = "t4", Value = "16", Selected = true });
Model.FKs.Add("DefaultAreaId", new ForeignKey { Title = "area", Items = Areas });
Fks
:
public Dictionary<string, ForeignKey> FKs { get; set; }
そしてForeignKey
、次のとおりです。
public class ForeignKey {
public string Title { get; set; }
public List<SelectListItem> Items { get; set; }
}