MVC DropdownList со сложными типами - PullRequest
0 голосов
/ 08 ноября 2018

Прежде всего: Да, я читал о похожих темах в StackOverflow, но просто не могу нормально работать. Я перепробовал много вариантов и чувствую, что я действительно близок к решению, но, думаю, мне просто нужна последняя дополнительная рука помощи.

Итак, я работаю над приложением MVC, связанным с Формулой 1, и занята формой для редактирования профиля водителя. Водитель имеет 2 сложных типа: страна и команда. Мне нужен выпадающий список, в котором каждая страна (или команда) представлена ​​в виде одной простой строки текста.

В основном моя проблема заключается в передаче моего списка SelectItems в представление. Жесткое кодирование элементов выбора в раскрывающемся списке не будет проблемой, но в моем случае это невозможно.

Код контроллера Это кажется довольно прямым для меня.

Я использую аннотацию [UIHint] для ссылки на шаблон Editor.

EditDriver viewmodel

В окне «EditDriver» важен только следующий код:

@Html.LabelFor(d => d.Country);
@Html.EditorFor(d => d.Country, new { SelectItemsCountry = Model.SelectItemsCountry });

EditorTemplate CountryDropdown

с его моделью просмотра:

public class EditCountryVM
{
    public Country DriverCountry { get; set; }
    public IEnumerable<SelectListItem> SelectItemsCountry { get; set; }
}

Я получаю следующую ошибку во время выполнения:

{"Элемент модели, передаваемый в словарь, имеет тип 'System.Data.Entity.DynamicProxies.Country_6DD4DB52DA6163390B9DC52D80C4EE400184AA68D9D1FF3BC7C013D6725EDDB0', но для этого словаря требуется элемент модели типа 'rylyS_10.1_MM_ME_ME_ME_ME_ME_ME_MD).

Мне казалось, что дополнительный параметр объекта в Html.Editorfor объединит эти данные в моей модели представления, но это явно не так?

Ценю вашу помощь! ура Kevin

1 Ответ

0 голосов
/ 09 ноября 2018

Я немного изменил свой код и все ближе к решению.

Шаблон редактора "CountryDropdown.cshtml" теперь выглядит следующим образом:

@using WebApp_Formula1_2018.Models;
@model Country
@Html.DropDownList("", (List<SelectListItem>)ViewData["SelectItemsCountry"])

Теперь моя форма редактирования показывается правильно с выбранной правильной страной. Однако после отправки я получаю следующее исключение: "System.ArgumentException: 'Значение не может быть нулевым или пустым."

ViewData, кажется, потерял в процессе? Может быть, это не правильный способ решения этой проблемы?

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