Mat*_*ieu 2 asp.net-mvc master-pages
我是ASP.net MVC的新手,我想使用视图,但根据用户角色使用不同的母版页.
现在,我扶着使用一个控制器谁返回视图1,如果用户在基于role1和视图2是基于role2. View1和View2包含相同的局部视图,用于呈现由两者共享但具有不同母版页的内容.
我想知道这是一个好习惯还是你推荐另一种设计.做一些简单的事情我的解决方案似乎有点复杂.也许我错过了什么
谢谢 !
您可以拥有一个根据用户角色返回主名称的函数,然后编写一个自定义操作过滤器,该过滤器将在操作后执行,并根据当前连接的用户角色设置相应的母版页:
public class MasterChooserAttribute : ActionFilterAttribute
{
public override void OnActionExecuted(ActionExecutedContext filterContext)
{
base.OnActionExecuted(filterContext);
var result = filterContext.Result as ViewResult;
if (result != null)
{
var user = filterContext.HttpContext.User;
result.MasterName = GetMaster(user);
}
}
private string GetMaster(IPrincipal user)
{
// TODO: based on the current user roles return the proper master page
throw new NotImplementedException();
}
}
Run Code Online (Sandbox Code Playgroud)
然后使用此操作过滤器简单地装饰您的基本控制器,或者如果这是ASP.NET MVC 3应用程序,只需将其声明为全局过滤器.
| 归档时间: |
|
| 查看次数: |
2751 次 |
| 最近记录: |