2015-12-30 4 views
0

Я относительно новичок в MVC Framework, поэтому я уверен, что это простой вопрос для ответа. Я хотел бы сделать страницу редактирования для профиля пользователя с большим количеством выпадающих списков. Я думаю, что лучший способ - создать viewmodel под названием ProfileViewModel, у которого есть объект для представления Профиль Я хочу отредактировать, т.е. конкретные значения объекта, а затем кучу свойств типа IList, чтобы содержать возможное значения для каждого свойства в профиле.MVC Редактировать страницу с DropDownLists

Например, допустим, что есть пользователь с профилем с Пол, равным мужской и этнической принадлежности, кавказской. Возможный выбор для пола - мужчина, женщина (я знаю больше, я не пытаюсь получить политический), а этническая принадлежность - кавказская, афро-американская, латинская и т. Д. Я хотел бы передать пользователя, но также списки возможных вариантов ,

1) У меня есть 15 списков. Лучше всего отправлять все из них в одной модели представления или я должен разделять на частичные представления для каждого раскрывающегося списка?

2) Как создать выбор в раскрывающемся списке, а затем выбрать вариант, соответствующий объекту профиля? Должен ли я передать весь viewmodel назад при сохранении объекта даже с включенными возможными вариантами?

3) Должен ли я иметь другой вид для создания и редактирования страниц. Единственное отличие было бы на странице редактирования, которую мне нужно будет выбрать в раскрывающемся списке, соответствующем объекту профиля.

Бонус вопрос:

4) У меня всегда есть, чтобы создать ViewModel (DTO), или я могу просто передать рамочный объект объект непосредственно в представлении. Я использую первый класс poco для кода.

Спасибо!

ответ

1

4) У меня всегда есть, чтобы создать ViewModel (DTO), или я могу просто передать Entity Framework объект непосредственно в представлении. Сначала я использую код класс poco.

Не рекомендуется смешивать сущности ORM, которые будут использоваться в вашем пользовательском слое. Лучшей практикой является создание отдельной модели представления , ОСУЩЕСТВЛЯЮЩАЯ ВИДУ.

3) Должен ли я иметь другой вид для создания и редактирования страниц. Единственное отличие было бы на странице редактирования, мне нужно было бы выбрать значения в раскрывающемся списке, соответствующем объекту профиля.

Это до вас. Но вы можете подумать о создании частичных представлений, которые включены в ваше представление создания и редактирования. Один частичный вид может иметь все текстовые входы, а во втором - выпадающие списки (если вы можете группировать все выпадающие списки вместе в представлении).

2) Как создать выбор в раскрывающемся списке, а затем выбрать выбор, соответствующий объекту профиля? Должен ли я передать всю модель в режиме просмотра при сохранении объекта даже с возможными вариантами ?

У вас будет другое свойство в вашей модели просмотра для хранения выбранного значения. При использовании этого свойства и надлежащую перегрузку DropDownListFor, вы будете иметь возможность выбрать вариант в раскрывающемся меню

public class EditProfileVm 
{ 
    public List<SelectListItem> Genders { set;get;} 
    public string SelectedGender {set;get;} 
} 

И в методе действий

public ActionResult Edit(int id) 
{ 
    var vm = new EditProfieVm(); 
    vm.Genders = new List<SelectListItem> { 
     new SelectListItem { Value="M", Text="Male"}, 
     new SelectListItem { Value="F", Text="FeMale"} 
     }; 
    vm.SelectedGender="F"; //Set the selected option here 
    return View(vm); 
} 

А на ваш взгляд

@model EditProfileVm 
@Html.DropDownListFor(s=>s.SelectedGender,Model.Genders) 

1) У меня есть 15 списков. Лучше всего отправить все из них в одну модель просмотра , или я должен отделить ее до частичного просмотра для каждого выпадающего списка?

Полностью зависит от вашего варианта использования/необходимости. Нет ничего плохого в отправке 15 выпадающих списков в модели просмотра. Но, увидев 15 падений в пользовательском интерфейсе, пользователь будет немного недоволен, так как он будет настолько запутан. Вы можете рассмотреть какой-то подход мастера, в котором вы будете скрывать и показывать часть своей информации о профиле, когда пользователь нажимает кнопку «Далее».

Смежные вопросы