如何显示属性错误消息

时间:2011-01-28 12:39:32

标签: asp.net asp.net-mvc asp.net-mvc-3

我有一个属性

public class RequiresAdminRights : ActionFilterAttribute
    {
        public override void OnActionExecuting(ActionExecutingContext filterContext)
        {
            User user = User.Load(HttpContext.Current.User.Identity.Name);
            if (user != null)
            {
                if (!(user.IsInRole(Role.Administrator)))
                    throw new Exception("You need admin rights to access this resource.");
            }
        }
    }

在我的控制器中我有

[Attributes.RequiresAdminRights]
public class UserController : Controller
{
    public ActionResult Index()
    {
        return View();
    }
}

登录的用户没有任何管理员权限,而RequiresAdminRights会抛出异常。如何显示异常消息?

1 个答案:

答案 0 :(得分:0)

抛出一个自定义异常,如PermissionDeniedException,创建一个基本的Controller类并定义如下。

[HandleError(ExceptionType = typeof(PermissionDeniedException), View = "Login")]]
public class BaseController : Controller
{

}

您的控制器现在应该扩展此类。 另外,不要忘记打开web.config中的customErrors。

现在,每次投掷和PermissionDeniedException用户都将被重定向到“登录”视图。另一种选择是将用户重定向到“权限被拒绝的视图”,该视图将向用户解释他在访问该页面之前需要登录。

有关详细信息,您可以查看其他SO问题。

  1. ASP.NET MVC HandleError
  2. ASP.net MVC [HandleError] not catching exceptions