2014-09-23 18 views
0

我目前的工作基於project.I一個MVC看到使用模型n個控制器的人以不同的方式,即時知道哪一個是根據MVC原則控制器和模型MVC的正確使用

方法-1的正確方法:

控制器:

public ActionResult index() 
    { 
    return View(); 
    } 

public string save() 
    { 
return null; 
    } 

public string Update() 
{ 
return null; 
} 

模型:

public string xx {get;set;} 
    public string yy {get;set;} 

中號ethod-2:

控制器:

public ActionResult index() 
{ 
return View(); 
} 

模型:

public string xx {get;set;} 
public string yy {get;set;} 

public string save() 
     { 
    return null; 
     } 

    public string Update() 
    { 
    return null; 
    } 
+0

方法1.您的保存/更新操作應該是Controller中的ActionResults(或類似),而不是您的Model。在保存/更新時,您將更新您的模型並將其傳遞迴您的視圖。 – dotnethaggis 2014-09-23 11:43:31

+0

模型應該只包含屬性?..我應該在哪裏把數據填充functions.in控制器或模型? – AfterGlow 2014-09-23 11:46:51

+0

您可以在控制器中調用業務邏輯層。 – dotnethaggis 2014-09-23 11:48:58

回答

0

Method 1.因保存/更新是Action Method這應該是內Controller而不是模型。

+0

填充下拉菜單的功能如何?我應該把它放在哪裏?..控制器或模型? – AfterGlow 2014-09-23 11:48:56

+0

控制器是一些對象,用於檢查用戶輸入與商業邏輯的對應關係。 – 2014-09-23 11:49:51

2

雖然方法2更接近它,​​但我認爲這兩者都不正確。

你應該有一個單獨的服務,你的控制器使用你的邏輯。

例子:

public ActionResult DoStuff() { 
    var model = Service.save(); 
    return View(model); 
} 

public class Model { 
    public string xx { get; set; } 
    public string yy { get; set; } 
} 

public class Service 
{ 
    public string save() 
    { 
     return null; 
    } 

    public string Update() 
    { 
     return null; 
    } 
} 

無論是控制器或模型應該具有的商業邏輯在其中。 They should only have a single responsibility。模型存儲控制器返回的數據。控制器只是將它從服務接收到的數據轉換爲模型。

+0

同意以上所述。有點我在你的問題的評論中說的。 @GrimurD調用了類Service,這就是我所說的Business Logic。 – dotnethaggis 2014-09-23 11:51:43

相關問題