MVC3 @ Html.DropDownListДля не заполнения выбранного элемента - PullRequest
2 голосов
/ 22 января 2012

У меня есть следующий раскрывающийся список в приложении 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>
    }
}
...

Текстовое поле под раскрывающимся списком заполнено правильно, а параметры списка заполнены правильно.И выбранный вариант находится в списке вариантов для выбора.Что я могу делать не так?

1 Ответ

8 голосов
/ 22 января 2012

Попробуй так:

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

AFAIK, помощник DropDownListFor не может определить выбранное значение из лямбда-выражения, которое передается в качестве первого аргумента, если это лямбда-выражение представляет сложные вложенные свойства с коллекциями. Работает с простыми свойствами, хотя: m => m.FooBar. Я знаю, что это отстой, но, надеюсь, это будет исправлено в будущих версиях.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...