为方法参数创建自定义FilterAttribute

时间:2013-02-05 09:41:52

标签: c# asp.net-mvc

是否可以为传入参数创建自定义FilterAttribute? 大多数属性用于方法和类;

例如我的想法是:

public HttpResponseMessage GetAll([CultureInfo]string culture)

{ if(valid) { // code here } }

CultureInfo是一个继承自ActionFilterAttribute的类(CultureInfoAttribute),我可以使用2个名为OnActionExecuted和OnActionExecuting的方法。 在我的课程之上,我使用了下一个属性,所以我可以在参数上使用它:

[AttributeUsage(AttributeTargets.Parameter)]

当我构建并且我调用GetAll(“culture”)时,我的自定义过滤器中的OnActionExecuting方法永远不会被调用....当我将该属性放在我的方法GetAll()之上时,它会这样做。

任何人都有经验吗?

我想这样做的原因是因为我可以将属性放在不同的参数上,而不是整个方法。

1 个答案:

答案 0 :(得分:0)

我认为您的问题已经回答here

您应该在GlobalFilters Global.asax.cs中注册过滤器,如下所示:

public static void RegisterGlobalFilters(GlobalFilterCollection filters)
{
    filters.Add(new HandleErrorAttribute());
    filters.Add(new CultureInfoAttribute());
}