2010-02-18 10 views
13

我已經設置了一個菜單控制器來驅動基於哪個其他控制器正在使用的頂級菜單鏈接。每個其他控制器爲其每個視圖都有一個單獨的嵌套主頁面。asp.net mvc我可以有多個操作方法的目標一個視圖?或者我需要爲每個單獨的視圖?

所以,我有一個菜單控制器與幾個方法,返回viewresults,每個控制器或網站的「部分」。所以目前每種方法都有自己的視圖來呈現菜單。但是呈現菜單的每個視圖都是相同的代碼,唯一改變的是控制器方法中基於哪個鏈接呈現的邏輯。

有沒有辦法讓所有這些控制器操作都以相同視圖爲目標?因爲所有人的觀點都一樣?

謝謝

回答

21

是的,這是一種常見的做法。

return View("Menu"); 
3

創建一個強類型視圖,該視圖需要一個指定菜單內容的容器。將此作爲返回語句中的參數傳遞。

var thisMenu = CreateMenuForThisRequest(); 
return View ("Menu", thisMenu); 
2

它取決於您使用的是什麼版本的ASP MVC;與MVC 2,您可以創建一個ASCX控制和使用的RenderAction

在你看來,你會把類似

 
Html.RenderAction("Menu", "Navigation"); 

,並有導航控制器帶有菜單的ActionResult

 

public class NavigationController : Controller 
{ 
     [ChildActionOnly] 
     public ActionResult Menu() 
     { 
     Menu model;//your menu 
     return PartialView("YourMenuAscxControlName", model); 
     } 
} 
 

我想想如果你使用MVC 1,MVC Future項目有RenderAction,但我不確定。

+0

MVC未來增加你的網站加載時間MVC 1具有的RenderAction – freddoo 2010-02-18 19:09:34

相關問題