我不知道如何实现这一点,所以我想对此有一些建议。我试图完成的是基本上(我使用纯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