所以我是MVC 4的新手,我正在考虑我该怎么做。
当前代码
我为每种类型的用户制作了几个SHARED布局。所以我现在有,管理员侧栏的_AdminLayout.cshtml,Faculty的_FacultyLayout.cshtml和_StudentLayout.cshtml
问题
我有几种类型的用户:管理员,学生和教师。边栏的内容根据登录的用户类型而变化。
还有其他解决方案吗?
我计划将所有侧边栏放在一个共享布局中,但MVC 4没有用于共享布局的控制器,这与Web窗体母版页不同,有一个Codebehind文件。我只是想缩短我的代码并减少我目前拥有的 3 SHARED LAYOUTS 之间的冗余。
答案 0 :(得分:0)
您可以使用一个单一布局,并使用@Html.Action()
将侧边栏渲染为部分视图,具体取决于用户的角色。这可以放在所有其他控件继承的BaseController
中,或者放在单独的控制器中(比方说)LayoutController
[ChildActionOnly]
public ActionResult SideBar()
{
var role = ... // your code for getting the users role
if (role == "Admin")
{
return PartialView("_AdminSideBar");
}
else if (role == "Faculty")
{
return PartialView("_FacultySideBar");
}
else if ..........
}
然后创建关联的部分视图_AdminSideBar.cshtml
,_FacultySideBar.cshtml
等。
然后在布局页面
......
<div id="sidebar">
@{ Html.RenderAction("", ""); }
</div>