我不知道如何實現這一點,所以我想對此有一些建議。我試圖完成的是基本上(我使用純MVC3.Net)修改佈局頁面的HTML,只要特定會話已開始或結束。如果用戶輸入項目的詳細信息(項目是一個實體),那麼這是我基於要求向主菜單顯示更多選項的想法。此外,這些選項將取決於用戶的類型。基於會話MVC3修改菜單
在做了一些研究之後,我提出了捕獲會話開始事件的想法,我會在每次選擇項目時創建這個事件,但是我不確定會話開始時我是否可以解決這個問題;結束,然後修改html。
完成此操作的最佳方法是什麼?
我不知道如何實現這一點,所以我想對此有一些建議。我試圖完成的是基本上(我使用純MVC3.Net)修改佈局頁面的HTML,只要特定會話已開始或結束。如果用戶輸入項目的詳細信息(項目是一個實體),那麼這是我基於要求向主菜單顯示更多選項的想法。此外,這些選項將取決於用戶的類型。基於會話MVC3修改菜單
在做了一些研究之後,我提出了捕獲會話開始事件的想法,我會在每次選擇項目時創建這個事件,但是我不確定會話開始時我是否可以解決這個問題;結束,然後修改html。
完成此操作的最佳方法是什麼?
也許你可以使用從https://github.com/maartenba/MvcSiteMapProvider動態地圖功能解決你的任務。
如果你不想使用這個提供者,我建議對所有viewmodels使用BaseViewModel,並在那裏存儲項目狀態。 所以,你可以做這樣的事情:
@model BaseViewModel(or something derived)
@{
ViewBag.Title = "Index";
Layout = ViewBag.Layout;
}
public ActionResult Index()
{
if(Model.HasProjectDetails)
{
@Html.Partial("_ExtendedNav")
}
if(Model.HasSomeExtraProjectDetails)
{
@Html.Partial("_MoreExtendedNav")
}
}
但在總體標識建議使用站點地圖提供商與https://github.com/maartenba/MvcSiteMapProvider/wiki/Dynamic-sitemaps
您可以控制基於此會話控制器視圖的佈局是一個簡單的例子
@{
ViewBag.Title = "Index";
Layout = ViewBag.Layout;
}
public ActionResult Index()
{
if(Session["one]=="one")
{
ViewBag.Layout = "~/Views/Shared/site_1.cshtml";
}
if(Session["one"]=="two")
{
ViewBag.Layout = "~/Views/Shared/site_2.cshtml";
}
}
沒有聽說過這個網站地圖供應商,我會檢查出來,看看它是否適合我。 – 2012-04-25 14:48:19