在我的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);这是否适合操作筛选器?
发布于 2012-03-23 23:36:57
这是否适合操作筛选器?
绝对:
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);
}
}
}
}或者你甚至可以构建一个定制的视图引擎。
https://stackoverflow.com/questions/9842054
复制相似问题