MVC-基于用户角色的切换视图

本文关键字:角色 视图 用户 于用户 MVC- | 更新日期: 2023-09-27 18:29:01

我的MVC应用程序中有一个要求,即根据用户的角色向用户呈现不同的操作视图。最好的方法是什么?

目前我有以下代码,我不喜欢:

if (HttpContext.User.IsInRole("Admin"))
    return View("Details.Admin", model);
else if (HttpContext.User.IsInRole("Power"))
    return View("Details.Power", model);
//default
return View("Details", model);

这是否适合操作筛选器?

MVC-基于用户角色的切换视图

这是否适合操作筛选器?

绝对:

public class MyActionFilterAttribute : ActionFilterAttribute
{
    public override void OnActionExecuted(ActionExecutedContext filterContext)
    {
        var result = filterContext.Result as ViewResultBase;
        if (result != null)
        {
            var user = filterContext.HttpContext.User;
            if (user.IsInRole("Admin"))
            {
                result.ViewName = string.Format("{0}.Admin", filterContext.ActionDescriptor.ActionName);
            }
            else if (user.IsInRole("Power"))
            {
                result.ViewName = string.Format("{0}.Power", filterContext.ActionDescriptor.ActionName);
            }
        }
    }
}

或者,您甚至可以构建一个自定义视图引擎。