在 MVC3 应用程序中,我需要一个全局过滤器来获取一个值,并且在执行任何控制器之前,但是我以后如何从控制器中获取该值?
public class MyGlobalFilter : ActionFilterAttribute
{
public override void OnActionExecuting(ActionExecutingContext filterContext)
{
int i = 10;
}
}
在 MVC3 应用程序中,我需要一个全局过滤器来获取一个值,并且在执行任何控制器之前,但是我以后如何从控制器中获取该值?
public class MyGlobalFilter : ActionFilterAttribute
{
public override void OnActionExecuting(ActionExecutingContext filterContext)
{
int i = 10;
}
}
您可以使用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"];
}
}
我发现可以通过动作控制器上下文设置一个新的 ViewBag 值,如下所示
filterContext.Controller.ViewBag.MyNewValue = 1