szukałem modeli widoku dla mvc i szukam najlepszego sposobu na ich wykonanie. Czytałem mnóstwo różnych artykułów, ale żaden nie wydaje się być tak jasny jak "najlepszy sposób". Dotychczas Przykładem może mam model Klienta o następujących właściwościach:asp.net mvc viewmodels. Ile logiki (jeśli w ogóle) powinno zawierać
- Imię
- Nazwisko
- Tytuł
- Położenie
Jeżeli lokalizacja jest klucz obcy do lokalizacji tabela w bazie danych.
Chcę móc edytować tego klienta, ale tylko imię, nazwisko i lokalizację. Nie przeszkadza mi tytuł w edycji. Moim zdaniem będę musiał przekazać klienta i wybraną listę.
Teraz z tego, co przeczytałem, mam następujące opcje (prawdopodobnie jest ich o wiele więcej).
Moje pytanie jest w zasadzie najlepsze?
1)
Dodaj do listy select do ViewData["Location"]
i wystarczy utworzyć silnie typami widoku klienta?
2)
Tworzenie widoku modelu, gdzie przechodzą mi klienta i wybierz listę (dostęp do danych odbywa się w kontrolerze):
public class ViewModelTest
{
public Customer Customer { get; set; }
public SelectList Locations { get; set; }
public ViewModelTest(Customer customer, SelectList locations)
{
Customer = customer;
Locations = locations;
}
}
3)
Tworzenie widoku modelu gdzie przekazuję klienta i listę lokalizacji i tworzę listę wyboru w modelu widoku.
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)
zdać klienta i repozytorium i zrobić dostęp do danych w modelu widoku.
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)
Tworzenie modelu widok z zaledwie właściwości muszę:
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)
lub jakąś inną kombinację wyżej lub inny sposób.
Wszystkie opinie mile widziane.