ASP.NET MVC - HTML. DropDownList - Значение не набор через ViewData. Модель

17
задан tereško 30 August 2013 в 20:29
поделиться

5 ответов

После набора мямления это сводится к следующей строке кода

if (ViewData.ModelState.TryGetValue(key, out modelState))

, что означает, что MVC пытается разрешить значение, только смотря на ViewData Dictionary<> возражают и не пересекающий вниз в ViewData. Объект модели.

, Является ли это ошибкой, ограничением или проектным решением, я не уверен. Однако можно зафиксировать его следующий путь:

<%= Html.TextBox("MyTextBox", ViewData.Model.MyTextBox) %>
5
ответ дан 30 November 2019 в 12:44
поделиться

попытайтесь установить выбранное значение в действии контроллера при создании набора SelectList.

ViewData["AddressTypeId"] = новый SelectList (CustomerService. AddressType_List (), "AddressTypeId", "Имя", myItem. AddressTypeId);

2
ответ дан 30 November 2019 в 12:44
поделиться

Хорошо, я могу что-то упустить из этого потока, однако в C # работает следующее:

Html.DropDownList("ProfessionGuid", (SelectList)ViewData["Professions"])

Где « ProfessionGuid » - это значение, которое нужно выбрать в списке.

В VB.Net, я полагаю, это будет:

Html.DropDownList("ProfessionGuid", ViewData["Professions"] AS SelectList)
-1
ответ дан 30 November 2019 в 12:44
поделиться

На самом деле вам просто нужно передать null для Html.DropDownList () .
У меня была точно такая же проблема, и я использовал Reflector для просмотра исходного кода MVC.

В System.Web.Mvc.Extensions.SelectExtensions.SelectExtensions класса SelectInternal () метод, он проверяет, имеет ли параметр selectList значение null или нет. Если он передается как null , он выполняет поиск в SelectList должным образом.

Вот «Код программной части».

ViewData["MyDropDown"] = new SelectList(selectListItems,
                             "Value",
                             "Text",
                             selectedValue.ToString()
                         );

Вот код просмотра HTML.

<%= Html.DropDownList("MyDropDown", null,
        "** Please Select **",
        new { @class = "my-select-css-class" }
    ) %>

Примечание. Я использую ASP.NET MVC 2.0 (бета-версия).

ПРИМЕЧАНИЕ ОБ ОБНОВЛЕНИИ: 31 января 2012 г.

После интенсивного использования ASP.NET MVC в течение последних 3 лет я предпочитаю использовать additionalViewData из метода Html.EditorFor () подробнее.

Передайте свой [List Items] как анонимный объект с тем же именем свойства , что и свойство модели, в Html.EditorFor ( ) метод.

<%= Html.EditorFor(
    m => m.MyPropertyName,
    new { MyPropertyName = Model.ListItemsForMyPropertyName }
) %>

Если вам нужны подробности, обратитесь к мой ответ в другой ветке здесь .

23
ответ дан 30 November 2019 в 12:44
поделиться

Если у вас есть проблемы с недопустимыми или нулевыми ViewData, обратите внимание на действия вашего контроллера.

Предположим, у вас есть ViewData с именем MyList для Html.DropDownlist с именем MyList.

Если вы вызовете ModelState.AddModelError ("MyList", "Пожалуйста, выберите профессию") , вы замените содержимое списка ViewData текстом этого предупреждения.

Вот почему у людей в Интернете возникают нулевые проблемы с ViewData в DropDownList.

Суть в том, что обратите внимание на свои идентификаторы в модели ошибок, они не должны мешать вашим элементам управления html.

-1
ответ дан 30 November 2019 в 12:44
поделиться
Другие вопросы по тегам:

Похожие вопросы: