MVC - Переключатель просмотра на основе роли пользователя - PullRequest
5 голосов
/ 23 марта 2012

В моем приложении 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);

Подойдет ли этот фильтр действий?

1 Ответ

6 голосов
/ 23 марта 2012

Подойдет ли это для фильтра действий?

Абсолютно:

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);
            }
        }
    }
}

Или вы могли бы даже создать собственный движок представления.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...