Я изучал модели для mvc и ищу лучший способ сделать это.Я прочитал множество разных статей, но ни одна из них не кажется мне «лучшим способом».Пока что у меня может быть модель Customer со следующими свойствами:
- Имя
- Фамилия
- Заголовок
- Местоположение
Где location - это внешний ключ для таблицы местоположений в базе данных.
Я хочу иметь возможность редактировать этого клиента, но только имя, фамилию и местоположение.Меня не беспокоит название в редактировании.Так что, на мой взгляд, мне нужно будет передать клиента и выбранный список.
Теперь из того, что я прочитал, у меня есть следующие варианты (возможно, их гораздо больше).
Так что мой вопросв принципе, какой из них лучший?
1)
Добавить список выбора в ViewData["Location"]
и просто создать строго типизированное представление клиента?
2)
Создайте модель представления, где я передаю клиента и выбираю список (доступ к данным осуществляется в контроллере):
public class ViewModelTest
{
public Customer Customer { get; set; }
public SelectList Locations { get; set; }
public ViewModelTest(Customer customer, SelectList locations)
{
Customer = customer;
Locations = locations;
}
}
3)
Создание модели представления, гдеЯ передаю клиента и список местоположений и создаю список выбора в модели представления.
public class ViewModelTest
{
public Customer Customer { get; set; }
public SelectList Locations { get; set; }
public ViewModelTest(Customer customer, List<Location> locations, string selectedLocation)
{
Customer = customer;
Locations = new SelectList(locations, "LocationID", "LocationName", selectedLocation);
}
}
4)
Передача клиента и хранилища и доступ к данным в модели представления.
public class ViewModelTest
{
public Customer Customer { get; set; }
public SelectList Locations { get; set; }
public ViewModelTest(Customer customer, IRepository repository, string selectedLocation)
{
Customer = customer;
Locations = new SelectList(repository.GetLocations(), "LocationID", "LocationName", selectedLocation);
}
}
5)
Создайте модель представления, используя только те свойства, которые мне нужны:
public class ViewModelTest
{
public string FirstName { get; set; }
public string LastName { get; set; }
public SelectList Locations { get; set; }
public ViewModelTest(Customer customer, SelectList locations)
{
FirstName = customer.FirstName;
LastName = customer.LastName ;
Locations = locations;
}
}
6)
Или некоторая другая комбинациявыше или иначе.
Все мнения приветствуются.