DropDown для Edit () [Razor] View, предварительно загруженный с данными из модели - PullRequest
2 голосов
/ 22 марта 2011

У меня есть раскрывающиеся списки в моем представлении Create (), работающем идеально.

Но в представлении Edit () я не могу получить данные, которые были отправлены во время Create (), для отображения в DropDowns со значением, введенным при Create ()

В данный момент у меня есть только текстовые поля, и я действительно хотел бы, чтобы данные были представлены в раскрывающемся списке для удобства выбора.

Вот один пример:

Представление Create () - один раскрывающийся список предназначен для EmployeeTypes и сохраняет выбранные данные для EmployeeTypeId

Теперь, как сделать так, чтобы оно отображалось в представлении «Правка ()» в том же выпадающем меню, но с уже выбранным значением «EmployeeId»?


У меня есть EmployeeViewModel для представления Create ()

Но я просто передаю модель прямо в представление Edit ()

Должен ли я создать какой-то "частичный класс" для Employee для представления Edit ()? обрабатывать списки IEnumerable?

и установить:

var employeeTypes = context.EmployeeTypes.Select(et => new SelectListItem
            {
                Value = et.EmployeeTypeId.ToString(),
                Text = et.Type.ToString()
            });

Или я должен передать их как ViewData?

Если это так, как вы передаете List в качестве ViewData и заставляете его отображаться как @ Html.DropDownList со значением, переданным из @Model, в качестве значения по умолчанию?

Ответы [ 2 ]

8 голосов
/ 25 марта 2011

Я закончил таким образом, и это сработало как сон.

Код контроллера:

 SelectList typelist = new SelectList(context.CompanyType.ToList(), "CompanyTypeId", "Type", context.CompanyType);
            ViewData["CompanyTypes"] = typelist;

Просмотр кода:

@Html.DropDownList("CompanyTypeId", (IEnumerable<SelectListItem>) ViewData["CompanyTypes"])
3 голосов
/ 22 марта 2011

В этом коде могут быть ошибки - я не проверял его - но то, что вы в основном хотите сделать, это:

var etId = ???  // EmployeeTypeId from your model
var employeeTypes = context.EmployeeTypes.Select(et => new SelectListItem
        {
            Value = et.EmployeeTypeId.ToString(),
            Text = et.Type.ToString(),
            Selected = et.EmployeeTypeId == etId
        });
ViewData["EmployeeTypeList"] = employeeTypes.ToList();

Тогда, по вашему мнению, вы можете сделать

@Html.DropDownList("EmployeeType", ViewData["EmployeeTypeList"])
...