自定义属性未被调用

时间:2013-01-28 22:18:24

标签: c# attributes

好吧,我显然错过了一些东西,因为这应该很简单。我创建了以下属性:

[AttributeUsage(AttributeTargets.Class | AttributeTargets.Method)]
public class EntitleAttribute : Attribute
{

    public EntitleAttribute(string permissionName)
    {
        bool hasPermission = ...
        if (!hasPermission)
        {
            throw new HttpException(403, "Forbidden");
        }
    }

}

我把它放在一个方法上:

[Entitle("Access Application")]
public ActionResult MyMethod(...) { ... }

然而,它从未被调用过。我错过了什么?

1 个答案:

答案 0 :(得分:4)

属性本身不做任何事情。需要有一些代码可以查找属性并对其执行某些操作。

基于代码示例,您希望在ASP.Net MVC应用程序中执行一些每次身份验证。在这种情况下,您应该从MVC的AuthorizeAttribute派生您的属性。如果您需要在MVC站点中进行更多一般处理 - 基础FilterAttribute或甚至IMvcFilter提供更多选项。