0

我已经看到了很多不同的 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!
   }
} 
4

1 回答 1

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/

于 2018-03-27T21:29:48.927 回答