2012-01-11 85 views
0

目前我有一個帶有導航菜單的頁面。此導航菜單從數據庫中獲取項目和子項目。 我認爲如果我把它作爲一個獨立的控制器來控制它會容易一些。 例如:將導航菜單作爲單獨的控制器是否很明智 - asp mvc

public class NavigationMenu : Controller 
{ 
    public ActionResult Menu() 
    { 
     Model model = // Get items and sub items 
     return View(model); 
    } 
} 

是讓這個或者我不應該因爲某種原因做這個正確的方式?

如果我讓這個菜單視圖不會有任何主佈局。我應該從中刪除所有<html><head><body>... html代碼嗎?

+0

我會建議使用的局部視圖,並使用Html.Partial渲染一個局部視圖,或者着眼於創建一個自定義的Html Helper,可以讓你渲染菜單。 – 2012-01-11 19:43:18

+0

我不能讓它作爲部分,因爲菜單從數據庫中獲取項目。所以它有它自己的模型。 – 1110 2012-01-11 20:05:35

+0

這就是Html.Partial和Html.RenderPartial的區別。就像我說的,你也可以建立你自己的Html Helper,它可以從數據庫獲取它們並緩存輸出。 – 2012-01-11 20:17:56

回答

3

我們使用這種模式,儘管我們將其稱爲NavigationController,而操作方法是TopTabs。我們將它作爲[ChildActionOnly],並返回部分視圖。要在佈局中呈現導航,我們使用@ Html.Action()。

我回答了你的是問題,並呈現局部視圖中或者您的佈局兒童的行動和你的主觀點:

[ChildActionOnly] 
public class NavigationController : Controller 
{ 
    public PartialViewResult CommonMenu() 
    { 
     Model model = // Get items and sub items 
     return PartialView(model); 
    } 
} 
+0

那ChildActionOnly屬性是做什麼的? – 1110 2012-01-11 20:25:05

+0

來自:http://haacked.com/archive/2009/11/18/aspnetmvc2-render-action.aspx「此屬性表示此操作不應直接通過URL進行調用。」 – danludwig 2012-01-11 20:39:25