Witam, zastanawiam się czy dobrze rozumiem koncepcję ViewModel w MVC. Korzystam z ViewModel do wyświetlenia powiązanych danych w jednym widoku np.
public class Address
{
public int AddressId { get; set; }
public string Country { get; set; }
public string State { get; set; }
public string City { get; set; }
public string Pin { get; set; }
}
public class Employee
{
public int EmployeeId { get; set; }
public string Name { get; set; }
public string Gender { get; set; }
public string Department { get; set; }
public decimal Salary { get; set; }
public int AddressId { get; set; }
}
public class EmployeeDetailsViewModel
{
public Employee Employee { get; set; }
public Address Address { get; set; }
}
Jeśli chodzi o wyświetlanie powiązanych danych to ma to dla mnie sens. Sytuacja zaczyna się komplikować jeśli chodzi o formularz dodania lub edycji pojedynczej instancji encji np. Employee. Na razie korzystam bezpośrednio z klasy modelu w moich kontrolerach i widokach (dla akcji dodania i edycji). Jednak chciałbym dodać jakąś walidację i jednocześnie nie chcę zaśmiecać sobie kodu klasy np. Employee validation attributes. I tu mam kilka pytań:
- Czy stworzenie osobnego ViewModel z wybranymi atrybutami modelu będzie dobrym rozwiązaniem dla widoków formularza np. EditViewModel, CreateViewModel?
- Czy posiadanie wielu ViewModels do jednej encji to dobre rozwiązanie, jeśli nie to czy jest inne?
- Czy może lepiej skorzystać z bliblioteki fluent validation zamiast tworzyć dodatkowe modele widoku, jeśli miałyby być użyte tylko do walidacji?