Как отправить данные модели в представление через контроллер в MVC C#
Я уже видел много разных архитектур MVC. Все они разные. Я хотел бы знать стандартный способ отправки данных модели в представление с помощью контроллера. Целесообразно ли отправлять объект модели в вид и устанавливать поля вида с помощью одного установщика? или установить поля просмотра по одному, используя несколько сеттеров с одним параметром или другим способом?
public class View{
public void SetField1(int value){
//...
}
public void SetField2(string text){
//...
}
public void SetField3(Time time){
//...
}
//or
public void SetContent(Model model){
//...
}
}
public class Model{
public int _value;
public string _text;
public Time _time;
public Model(int value,string text,Time time){
//...
}
}
public class Controller{
Model _model;
View _view;
public Controller(){
_model=new Model();
_view=new View();
}
public void SetModel(Model model){
_model=model;
SetContentView();
}
public void SetView(View view){
_view=view;
}
public void SetContentView(){
_view.SetField1(_model._value);
_view.SetField2(_model._text);
_view.SetField3(_model._time);
//or
_view.SetContent(_model); // the view can not be decoupled with model!
}
}
1 ответ
Вы можете создать объект ModelView, который явно определяет свойства, необходимые для вашего представления. Затем вы можете определить класс Mapper, отвечающий за отображение модели на стороне сервера в модель на стороне клиента, таким образом отделяя представление от модели сервера.
Из вашего примера:
public class Controller{
Model _model;
View _view;
Mapper _mapper;
public Controller(){
_model=new Model();
_view=new View();
_mapper = new ViewModelMapper();
}
public void SetContentView(){
_view.SetContent(_mapper.map(_model));
}
}
У меня нет большого опыта работы с ними, но существуют рамки, призванные сделать это менее утомительным: http://automapper.org/