MVC 导航设计
MVC Navigation Design
根据用户所在的页面呈现某些导航超链接的最佳方法是什么(我使用的是 C# MVC 4)。
我有一个 _layout.cshtml 如下所示(为显示目的而缩短)。
<body>
@{Html.RenderAction("MainNav", "Navigation");}
<div id="container">
@RenderBody();
</div>
</body>
如果用户导航到 /Home/Index 那么我希望 MainNav 呈现主页 | 的超链接管理层
然后,如果用户单击管理,将更改为主页 |公司 |团队 |如果他们单击这些链接之一,角色将再次更改。
你想得越多,你描述的问题就越复杂。所以我倾向于使用图书馆。尽管在这一点上看起来有点矫枉过正,但根据我的经验,它会在以后得到回报:
<body>
@Html.MvcSiteMap().Menu()
<div id="container">
@RenderBody();
</div>
</body>
这就是您在使用 https://github.com/maartenba/MvcSiteMapProvider
时需要做的全部
Install-Package MvcSiteMapProvider
只需像这样注释您的操作:
[MvcSiteMapNode(Title = "Menu Title")]
使用 Html.RenderAction()
或 Html.Action()
将涉及传递一个参数来标识您的当前视图,并使用多个 if/else
块来定义部分应呈现的内容。相反,您可以使用 Razor 部分作为特定内容的占位符,这些内容可以放置在布局中的任何位置。
在布局中,添加 @RenderSection()
,在本例中命名为 "menu" 作为菜单链接的占位符
<div id="sidebar">
@RenderSection("menu", required: false)
</div>
<div id="container">
@RenderBody();
</div>
然后在每个视图中,添加 @section menu { ... }
包含要显示的链接
Index.cshtml
// content to be displayed
@section menu {
@Html.ActionLink("Home", .....)
@Html.ActionLink("Management", .....)
}
Management.cshtml
// content to be displayed
@section menu {
@Html.ActionLink("Home", .....)
@Html.ActionLink("Company", .....)
@Html.ActionLink("Teams", .....)
@Html.ActionLink("Roles", .....)
}
根据用户所在的页面呈现某些导航超链接的最佳方法是什么(我使用的是 C# MVC 4)。
我有一个 _layout.cshtml 如下所示(为显示目的而缩短)。
<body>
@{Html.RenderAction("MainNav", "Navigation");}
<div id="container">
@RenderBody();
</div>
</body>
如果用户导航到 /Home/Index 那么我希望 MainNav 呈现主页 | 的超链接管理层
然后,如果用户单击管理,将更改为主页 |公司 |团队 |如果他们单击这些链接之一,角色将再次更改。
你想得越多,你描述的问题就越复杂。所以我倾向于使用图书馆。尽管在这一点上看起来有点矫枉过正,但根据我的经验,它会在以后得到回报:
<body>
@Html.MvcSiteMap().Menu()
<div id="container">
@RenderBody();
</div>
</body>
这就是您在使用 https://github.com/maartenba/MvcSiteMapProvider
时需要做的全部Install-Package MvcSiteMapProvider
只需像这样注释您的操作:
[MvcSiteMapNode(Title = "Menu Title")]
使用 Html.RenderAction()
或 Html.Action()
将涉及传递一个参数来标识您的当前视图,并使用多个 if/else
块来定义部分应呈现的内容。相反,您可以使用 Razor 部分作为特定内容的占位符,这些内容可以放置在布局中的任何位置。
在布局中,添加 @RenderSection()
,在本例中命名为 "menu" 作为菜单链接的占位符
<div id="sidebar">
@RenderSection("menu", required: false)
</div>
<div id="container">
@RenderBody();
</div>
然后在每个视图中,添加 @section menu { ... }
包含要显示的链接
Index.cshtml
// content to be displayed
@section menu {
@Html.ActionLink("Home", .....)
@Html.ActionLink("Management", .....)
}
Management.cshtml
// content to be displayed
@section menu {
@Html.ActionLink("Home", .....)
@Html.ActionLink("Company", .....)
@Html.ActionLink("Teams", .....)
@Html.ActionLink("Roles", .....)
}