DropDownListFor 没有从模型中正确选择

DropDownListFor not selecting correctly from Model

@Html.DropDownListFor(model => model.Members[index].Contact.RelationId.Value, new SelectList(Model.Relations, "RelationId", "Description"), new { @class = "form-control" })

所以我的列表正在创建,并且 model.Members[index].Contact.RelationId.Value = 2 但不会 select DDL 的第二个 ID 只有第一个。

我已经尝试了几种不同的方法和堆栈溢出解决方案。不确定我可能做错了什么

one of the answers attempted

@Html.DropDownListFor(model => model.Members[index].Contact.RelationId.Value, new SelectList(Model.Relations, "RelationId", "Description"),  Model.Members[index].Contact.RelationId.Value)

没有效果

根据 MSDN 上的 this article,SelectList class 上有一个构造函数,它采用以下参数:

SelectList Constructor (IEnumerable, String, String, Object)

其中 IEnumerable 是 SelectList 项,第一个 String 是键,第二个 String 是文本,Object 是 SelectedValue,这就是我看到的你的目标。

因此,我相信你应该试试这个:

@Html.DropDownListFor(model => model.Members[index].Contact.RelationId.Value, new SelectList(Model.Relations, "RelationId", "Description", model.Members[index].Contact.RelationId.Value), new { @class = "form-control" })

看看是否有效:)

在这一行

@Html.DropDownListFor(model => model.Members[index].Contact.RelationId.Value, new SelectList(Model.Relations, "RelationId", "Description"),  Model.Members[index].Contact.RelationId.Value)

应该是这样的:

@Html.DropDownListFor(m => m.Members[4].Contact.RelationId.RelationId, 
new SelectList(Model.Relations, "RelationId", "Description", Model.Members[4].Contact.RelationId.RelationId), new { @class = "form-control" })        

"m => m.Members[4].Contact.RelationId.RelationId" 是在 post 返回期间应保存值的位置。

Model.Members[4].Contact.RelationId.RelationId 是在下拉列表中选择的值。