Byłem przyzwyczajony do dekorowania klas modeli danych za pomocą atrybutów adnotacji danych, ale purysta we mnie nieznacznie opiera się na włączaniu czysto prezentacyjnych atrybutów, takich jak format wyświetlania tutaj. Cieszę się jednak, że mogę tutaj zachować atrybuty związane z walidacją. Jednym z ważnych powodów, dla których muszę nadal przechowywać wszystkie adnotacje itp. W modelu danych, jest to, że mój model widoku agreguje klasy modeli danych, np. moja właściwość ViewModelBase.DetailItem<TEntity>
w modelu widoku jest po prostu odwołaniem do klasy encji w moim modelu danych. Gdybym chciał przenieść adnotacje prezentacyjne do modelu widoku, musiałbym całkiem radykalnie zmienić mój projekt na taki, w którym duplikuję właściwości modelu danych w moim modelu widoku i użyć narzędzia mapowania obiektów do wypełnienia obiektów modelu widoku na podstawie obiektów modelu danych.Czy adnotacje danych powinny należeć do modelu lub modelu widoku?
Gdzie powinienem robić moje adnotacje danych?
Tak BTW, to jest to, co mój brulion ViewModelBase
wygląda następująco:
public class ViewModelBase<T>
{
public virtual string PageTitle { get; set; }
public virtual string ViewHeading { get; set; }
public virtual ViewMode ViewMode { get; set; }
public virtual IEnumerable<T> ItemList { get; set; }
public virtual T DetailItem { get; set; }
}
Sprawdź również: http://stackoverflow.com/questions/3338919/mvc-validation-using-data-annotations-model-classes-or-view-model-classes – DarrellNorton