Asp.net mvc 3 MVC3@Html.dropdownlist用于不填充所选项目

Asp.net mvc 3 MVC3@Html.dropdownlist用于不填充所选项目,asp.net-mvc-3,Asp.net Mvc 3,我在MVC3应用程序中有以下下拉列表,所选项目未显示值。我的下拉列表包含在自定义类的列表中。我的视图代码如下 ... for (int i = 0; i < Model.PartAttributes.Count; i++) { if (Model.PartAttributes[i].IsActive) { <div class="row inline-inputs"> <label class="span5">

我在MVC3应用程序中有以下下拉列表,所选项目未显示值。我的下拉列表包含在自定义类的列表中。我的视图代码如下

...

for (int i = 0; i < Model.PartAttributes.Count; i++)
{
    if (Model.PartAttributes[i].IsActive)
    {
        <div class="row inline-inputs">
            <label class="span5">@Model.PartAttributes[i].DisplayName:</label>
            @Html.DropDownListFor(m => m.PartAttributes[i].Value, Model.PartAttributes[i].PartList, "Choose Part")
            @Html.TextBoxFor(model => Model.PartAttributes[i].Value, new { @class = "mini" })
            @Html.ValidationMessageFor(model => Model.PartAttributes[i].Value)
            @Html.HiddenFor(model => model.PartAttributes[i].AttributeName)

        </div>
    }
}
...
。。。
对于(int i=0;im.PartAttributes[i]。值,模型。PartAttributes[i]。零件列表,“选择零件”)
@Html.TextBoxFor(model=>model.PartAttributes[i].Value,新的{@class=“mini”})
@Html.ValidationMessageFor(model=>model.PartAttributes[i].Value)
@Html.HiddenFor(model=>model.PartAttributes[i].AttributeName)
}
}
...
下拉框下的文本框正确填充,列表选项正确填充。所选选项位于要拾取的选项列表中。我会做错什么?

试着这样做:

@Html.DropDownListFor(
    m => m.PartAttributes[i].Value, 
    new SelectList(
        Model.PartAttributes[i].PartList, 
        "Value", 
        "Text", 
        Model.PartAttributes[i].Value
    ), 
    "Choose Part"
)

AFAIK如果lambda表达式表示具有集合的复杂嵌套属性,则
DropDownListFor
帮助程序无法从作为第一个参数传递的lambda表达式中确定所选值。但是可以使用简单的属性:
m=>m.FooBar
。我知道这有点糟糕,但希望在将来的版本中能解决这个问题。

首先感谢您的回答。这的确很糟糕。快速提问……你是怎么知道的?我在哪里可以看到甚至有错误?它就是不起作用。@PlTaylor,我知道这一点,因为当我第一次遇到这个问题时,我只是查看了ASP.NET MVC源代码,了解了
DropDownListFor
帮助程序是如何实现的。