2012-06-12 128 views
0

在MyMainView中我有多個PartialViews。公共屬性暴露給MVC模型

每個PartialView強類型爲MyMainView中公開的屬性,每個局部視圖還包含一些常用信息。

public class MainModel 
{ 
    public SubModel1 { get; set; } 
    public SubModel2 { get; set; } 
    public SubModel3 { get; set; } 
    public CommonStuff { get; set; } 
} 

是否有實現這一共同財產共享一個公認的做法?

我正在考慮將子模型中的屬性返回給它的父類。這是建議/不推薦?

例如。

public class SubModel1 
{ 
    public int Number { get; set; } 
    public MainModel ParentModel { get; set; } 
} 

這裏的主要目標是避免一遍又一遍加載相同的數據。

對於我目前正在查看的模型,它的一系列在視圖中共享的LookUp詞典,並用於諸如下拉列表之類的內容。

回答

0

post將幫助你解決困惑。

在你的案例中,大多數情況下你可能需要在主要操作中查詢完整模型並將其提供給主視圖。在主視圖中,將主模型傳遞給部分視圖,該部分視圖依賴於子模型以及使用Html.RenderPartial的常見屬性,或者僅將部分視圖的子模型視爲僅需要這些部分視圖。

如果你是在一個局部視圖顯示子模型,您應該使用兒童行動和局部視圖不取決於主力機型,只需的局部視圖完全獨立於主視圖的。

如果您需要爲特定部分應用緩存行爲,也可以執行子操作。

假設您想在同一視圖的兩個或多個局部視圖中顯示相同的模型,您可以避免使用子動作,因爲您必須一次又一次地查詢數據。

所以解決方案是你應該明智地選擇基於上述評論的兒童行動或Html.RenderPartials。

0

您可以使用子操作。菲爾·哈克blogged關於他們。通過這種方式,您可以將整個通用功能封裝到獨立的模型/控制器/視圖生命週期中,該生命週期與主模塊不同,並將其作爲小部件嵌入。