我已经见过很多不同的 MVC 架构。他们都是不同的。我想知道使用控制器将模型数据发送到视图的标准方法。使用一个 setter 将模型对象发送到视图并设置视图字段是否合适?或者使用一个参数或其他方式使用多个设置器一个一个地设置视图字段?
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!
}
}
您可以创建一个 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/
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句