1

在 MVC3 应用程序中,我需要一个全局过滤器来获取一个值,并且在执行任何控制器之前,但是我以后如何从控制器中获取该值?

public class MyGlobalFilter : ActionFilterAttribute
{
    public override void OnActionExecuting(ActionExecutingContext filterContext)
    {
        int i = 10;
    }
}
4

2 回答 2

3

您可以使用HttpContext.Items

public class MyGlobalFilter : ActionFilterAttribute
{
    public override void OnActionExecuting(ActionExecutingContext filterContext)
    {
        HttpContext.Current.Items["I"] = 10;
    }
}
public class MyController : Controller
{
    private int _i;
    protected override void OnActionExecuting(ActionExecutingContext filterContext)
    {
        _i = (int)HttpContext.Items["I"];
    }
}
于 2012-11-28T15:57:27.880 回答
1

我发现可以通过动作控制器上下文设置一个新的 ViewBag 值,如下所示

filterContext.Controller.ViewBag.MyNewValue = 1
于 2012-11-28T16:03:39.100 回答