2011-04-06 63 views
0

如何在ASP.Net MVC 3中創建視圖,將視圖的一部分創建/呈現到另一個視圖/控制器,而不知道設計時間什麼視圖/控制器將被推遲到什麼時候?如何在ASP.Net MVC 3中創建複合視圖?

我有一個使用佈局頁面的儀表板視圖/控制器。儀表板視圖完成了渲染整個屏幕的大部分工作。但是整個屏幕中的某個佔位符部分將根據業務規則,配置,用戶交互等而有所不同。可能需要在佔位符部分呈現三個單獨的插件視圖/控制器。一旦儀表板控制器確定哪個插件應該可見,我如何指示儀表板視圖呈現特定的插件視圖。我已經通過在Dashboard模型中放置標誌,然後在Dashboard視圖中使用基於標誌的相應參數調用Html.RenderAction來實現這一點。這似乎並不令人滿意,我認爲已經有一種簡單的內置功能用於這種場景,請告知。

謝謝

回答

0

你可以寫你自己的HtmlHelper和使用,在您的視圖,而不是使用標誌。

1

你真的在問:「我該如何動態渲染部分視圖,誰在設計時就知道身份。

可以通過Html.RenderPartial或Html.RenderAction兩種方式獲得。兩者都有自己的位置。如果主頁面「知道」足以獲得視圖數據,那麼RenderPartial是更好的選擇,因爲它比RenderAction更高效。如果您只知道門戶小部件的唯一標識符,而不是RenderAction的工作原理,因爲您現在擁有完全有效的控制器方法,可以執行諸如回到數據庫並呈現視圖等操作。

+0

其實你錯過了我不知道的**設計**時間的關鍵點,哪些插件將被加載,直到**運行時**才知道。 – apalmer 2011-04-06 18:48:46

+1

RenderPartial將一個字符串和一個對象作爲參數,在運行時很容易覆蓋。 RenderAction是一個控制器方法,因此它可以自己加載對象並找出要渲染的視圖。我知道,我已經有了一些基於窗口小部件的系統,可以完成這些工作來渲染在設計時不存在的組件。 – 2011-04-06 20:22:58

相關問題