0

我有一个名为的数据库表ItemAttributeLinks和这些表的集合

Collection<ItemAttributeLink> ItemAttributeLinks

现在,在我看来,我这样做是为了将 n 个下拉列表绑定到此集合中的 n 个项目。这不起作用。中的值m.Item.ItemAttributeLinks始终为空。下拉列表中的值出现并且都是正确的,问题是所选值,不要在回发时绑定。

@{
            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。

以这种方式绑定多个下拉列表的正确方法是什么?}

4

1 回答 1

0

您需要将下拉列表绑定到原始类型(例如整数、字符串、Guid...):

@Html.DropDownListFor(
    m => m.Item.ItemAttributeLinks[i].SomePrimitiveTypeProperty,
    Model.AttributeValuesList[Convert.ToInt32(type.Value)], 
    "Select a value"
)

然后在您的 POST 控制器操作中,原始类型将填充所选值。如果要获取相应的模型,则必须使用 id 查询数据库。

请记住,在 HTML 中,<select>元素(这是 DropDownList 帮助程序生成的)仅在提交表单时发送选定的值。您不能将其绑定到复杂类型。

于 2012-10-30T06:58:36.983 回答