2008-09-13 30 views
8

我在我的ASP.NET MVC應用程序中使用了幾個(2或3)母版頁,它們必須每個都顯示來自數據庫的信息位。如贊助商名單,當前的資金狀況等。將母版頁的代碼放在MVC應用程序中的位置?

所以我的問題是,我應該在哪裏放這些主頁數據庫調用代碼?

通常情況下,這些應該進入自己的控制器類嗎?但那意味着我不得不手動連接它們(例如傳遞ViewDatas),因爲它不在MVC框架提供的正常路由框架中。

有沒有一種方法,這乾淨地沒有佈線ViewData傳遞/操作調用手動控制母版頁或子類化框架?

文檔的數量非常低...我對這一切都很陌生,包括MVC本身的概念,所以請分享你的提示/技巧。

回答

5

這樣做的一種方法是在masterpage視圖中放入ViewData的鉤子,然後定義一個BaseController:Controller(或多個基類),在其中執行所有需要的db調用。

你想要做的是與this文章中描述的完全相同的東西。

我希望這有助於!

問候

0

如果你不介意的強類型的視圖數據,你可以把所有的母版頁數據在可視數據的通用基類。你可以在基類的構造函數中設置這些數據。所有你需要額外數據的視圖都需要從這個基類繼承的強類型viewdata。

要允許調用在控制器的視圖()沒有任何明確的可視數據,你可以在你的ControllerBase覆蓋查看:

protected override ViewResult View(string viewName, string masterName, object model) 
{ 
    if (model == null) 
    { 
     model = new ViewDataBase(); 
    } 
    return base.View(viewName, masterName, model); 
} 
+0

可能想調用BaseViewData代替:-) – chakrit 2009-05-20 16:27:14

1

大問題。你有幾種選擇可供你使用。

  1. 在您的主頁面上有一個jQuery調用,它從控制器獲取您需要的數據,然後再次使用jQuery填充您的字段。
  2. 您的第二個選擇是創建用戶控件,以便自己調用控制器來填充其信息。

我認爲最好的選擇是爲您的masterpage的區域創建需要填充數據的控件。因此,讓您的母版頁嚴格包含設計元素。祝你好運。

相關問題