2010-06-11 78 views
0

我已經使用ActiveRecord開發了我自己的自定義用戶和角色對象,不擴展默認的Asp.Net提供程序,因此我無法從HttpContext獲取用戶。我可以創建一個自定義的htmlhelper來呈現菜單,但是我的視圖應該呈現菜單還是主頁面?應該查看渲染菜單或母版頁

如果是母版頁,我怎樣才能傳遞給自定義的htmlhelper,比如當前用戶,因爲某些菜單項取決於用戶角色。

另外,如何檢測我的母版頁內正在查看哪個控制器?

回答

2

1)如果你的菜單功能應該存在於多個頁面上,那麼將它放入主頁面是有意義的。如果沒有,那麼正常的看法。

2)一個流行的選擇是讓所有的ViewModel繼承基礎視圖類,然後你的母版頁使用它。例如:

System.Web.Mvc.ViewMasterPage<ViewBase> 
System.Web.Mvc.ViewPage<MyViewModel> 

public class MyViewModel : ViewBase { } 

3)您可以從路線數據中拉出特定的控制器。但是,如果您需要某些控制器的特定功能,那麼我只建議對這些視圖使用不同的母版頁,而不是試圖使所有視圖都使用相同的母版頁。

+0

您的建議運行良好,因爲它迫使我使用完全強大的類型化視圖模型來處理所有視圖。 – Roman 2010-06-11 18:28:07

1

一般來說,所有的ASP.NET控件(無論是WebForms還是MVC)都應該控制自己的狀態。

在處理導航的情況下,我會說創建一個.ASCX(局部視圖)並將其放在您的母版頁上。讓分部視圖根據HttpContext控制它的顯示方式。

+0

謝謝你。我最終創建了一個局部視圖,它將負責渲染我的菜單。它非常甜。 – Roman 2010-06-11 18:29:00