2012-04-24 68 views
0

我不知道如何實現這一點,所以我想對此有一些建議。我試圖完成的是基本上(我使用純MVC3.Net)修改佈局頁面的HTML,只要特定會話已開始或結束。如果用戶輸入項目的詳細信息(項目是一個實體),那麼這是我基於要求向主菜單顯示更多選項的想法。此外,這些選項將取決於用戶的類型。基於會話MVC3修改菜單

在做了一些研究之後,我提出了捕獲會話開始事件的想法,我會在每次選擇項目時創建這個事件,但是我不確定會話開始時我是否可以解決這個問題;結束,然後修改html。

完成此操作的最佳方法是什麼?

回答

0

也許你可以使用從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

+0

沒有聽說過這個網站地圖供應商,我會檢查出來,看看它是否適合我。 – 2012-04-25 14:48:19

0

您可以控制基於此會話控制器視圖的佈局是一個簡單的例子

@{ 
    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"; 

     } 

}