簡體   English   中英

如何通過MVC C#中的控制器將模型數據發送到視圖

[英]How to send model data to a view through a controller in 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!
   }
} 

您可以創建一個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/

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM