Я использую ASP.NET MVC и не уверен, что логика, которая у меня есть в моей модели просмотра, уместна. Вот посмотреть пример модели:Должен ли я иметь эту логику в модели представления?
class ViewModel {
public string prop1 {get; set;}
public string prop2 {get; set;}
List<string> prop3 {get; set;}
.......... // more properties
public ViewModel() {
prop1 = DataModel.field1
prop2 = DataModel.field2;
prop3 = UtilityClass.complexFunction();
......
}
}
Проблема заключается мой взгляд модель имеет много свойств, и я подумал, инициализации их в контроллере, но, кажется чище инкапсулировать заселение свойств в модели представления чтобы контроллер был более компактным. Если я должен делать это в контроллере, в чем же причина? Я думаю, что этот подход будет примерно таким:
ViewModel model = new ViewModel() {prop1 = DataModel.prop, prop3 = UtilityClass.complexFunction()}
Это довольно субъективный вопрос, но вы должны избегать использования моделей, загрязняющих окружающую среду, потому что обычно эти модели сложнее разделить. Например, вы можете подумать о добавлении некоторой логики, которая может применяться только на сервере к вашему классу модели; но если вы хотите поделиться этим классом с клиентом, поведение становится неработоспособным. Целью контроллера является определение поведения и данных модели. Обеспечивает хорошую инкапсуляцию. –
Я вижу, это имеет смысл. Так вы бы порекомендовали что-то вроде моего последнего кода, который имеет параметры передачи контроллера в модель представления? – trs79