如何通过 MVC C# 中的控制器将模型数据发送到视图

How to send model data to a view through a controller in MVC C#

我已经见过很多不同的 MVC 架构。他们都是不同的。 我想知道使用控制器将模型数据发送到视图的标准方法。 将模型对象发送到视图并使用一个setter设置视图字段是否合适?或者使用一个参数或其他方式使用多个 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 class 负责将服务器端模型映射到客户端模型,从而将视图与服务器模型解耦。

根据你的例子:

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/