我有一个名为ItemAttributeLinks
的数据库表,以及这些表的集合
Collection<ItemAttributeLink> ItemAttributeLinks
现在,在我看来,我这样做是为了将n个下拉列表绑定到此集合中的n个项目。这不起作用。 m.Item.ItemAttributeLinks
中的值始终为null。下拉列表中的值显示并且都是正确的,问题是所选值不会在回发时绑定。
@{
int i = 0;
foreach (var type in @Model.AttributeTypes)
{
<section>
<label>@type.Text</label>
<div> @Html.DropDownListFor(m => m.Item.ItemAttributeLinks[i] ,Model.AttributeValuesList[Convert.ToInt32(type.Value)], "Select a value")</div>
</section>
i++;
}
ItemAttributeLink表顺便包含一个int id,一个int外键attributevalueid和一个int外键ItemId。
以这种方式绑定多个下拉列表的正确方法是什么? }
答案 0 :(得分:0)
您需要将下拉列表绑定到基本类型(例如整数,字符串,Guid,...):
@Html.DropDownListFor(
m => m.Item.ItemAttributeLinks[i].SomePrimitiveTypeProperty,
Model.AttributeValuesList[Convert.ToInt32(type.Value)],
"Select a value"
)
然后在POST控制器操作内部,将使用所选值填充基元类型。如果要获取相应的模型,则必须使用id查询数据库。
请记住,在HTML中,<select>
元素(DropDownList帮助程序生成的元素)仅在提交表单时发送选定的值。您无法将其绑定到复杂类型。