簡體   English   中英

我是否需要為每個方案使用單獨的模型/控制器,或者可以將單個模型/控制器用於多個方案?

[英]Do I need a separate Model/Controller for each scenario, or can I reuse a single Model/Controller for multiple scenarios?

我的家庭模型/視圖/控制器(配置頁面的初始狀態)工作正常。

不過,我還需要響應用戶在頁面上所做的更改(從選擇中選擇一個選項,選中一個復選框等),並且尚未使它起作用。

也許我遇到問題的原因是我試圖重用我的“ Home”模型,該模型不僅包含頁面初始化所需的內容,還包含其他一些內容。 例如,我的模型:

public class HomeModel
{
    public DataTable Units { get; set; }
    public DataTable Reports { get; set; }
    public DataTable UnitReportPairEmailVals { get; set; }
    public DataTable UnitReportPairGenerateVals { get; set; }
    . . .
}

...包含頁面最初需要的內容(“單元”和“報表”以及用省略號點表示的內容),還包含稍后需要的內容(顯示了其他兩個)。

我想知道(通過對HomeController中另一個方法的Ajax調用)取回數據的問題的至少部分原因是因為我應該對Ajax調用使用單獨的Model和Controller。

所以我想知道:模型/控制器擴散是代碼氣味/反模式,還是必要的? 我是否應該創建另一個模型,例如:

public class AJAXModel
{
    public DataTable UnitReportPairEmailVals { get; set; }
}

...以及相應的單獨控制器?

如果我有一個在各種情況下使用的復雜模型,似乎每次我將模型作為Action的返回值(結果)傳遞回時,很多多余的/未填充的東西也將被傳遞回去(只有我當時感興趣的成員會填充到Controller中,從而傳回很多空/空成員)。

所以我的問題是,我應該為每個“用例”創建一個清晰的模型/控制器,還是可以將一堆東西組合成一個模型/控制器對?

沒有令人信服的理由將Model限制為單個Controller或期望Controller只有一個Model 您可以在單個Controller編寫整個應用程序(順便說一句,這確實是個壞主意)。

通常,該划分是一個邏輯上的划分……一系列動作在一個控制器中與一組相同的Models對話。 當您打開源文件或其他文件時,這樣做的目的不僅在於防止大腦融化。

您通常有多個Views並且它們傾向於使用控制器中的“ Actions來按名稱進行命名...但這並不是嚴格執行的。

當您覺得要在View獲取更多數據時,可以通過將Model映射到ViewModel來簡化View的代碼,從而簡化此過程。 是的,這是MVVM ...再一次...大腦對View較簡單的對象的處理較少受到傷害。

您可以在Controller手動映射對象,也可以使用自動映射器完成該操作。 有很多選擇...它們使MVVM變得更簡單。 您不一定需要一個。 他們只是有幫助。

暫無
暫無

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

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