在Controller Action中访问Action Filter的数据

时间:2011-08-12 11:08:31

标签: asp.net-mvc

[ApiBasicAuthorize]
public ActionResult SignIn()
{

}

我有一个名为ApiBasicAuthorize的自定义过滤器。是否可以在控制器动作SignIn中访问ApiBasicAuthorize的数据(属性等)?

如果没有,我如何将数据从过滤器传递到控制器操作?

2 个答案:

答案 0 :(得分:25)

有一个名为items的字典附加到HttpContext对象。使用此字典存储请求期间跨组件共享的项目。

public override void OnAuthorization(AuthorizationContext filterContext)
{
    filterContext.HttpContext.Items["key"] = "Save it for later";

    base.OnAuthorization(filterContext);
}

然后在请求中的代码中的任何位置......

var value = HttpContext.Current.Items["key"];

答案 1 :(得分:6)

    public override void OnAuthorization(AuthorizationContext filterContext)
    {
        var rd = filterContext.RouteData;

        //add data to route
        rd.Values["key"]="Hello";

        base.OnAuthorization(filterContext);
    }



public ActionResult(string key)
{
 //key= Hello
return View();
}