将TempData从动作过滤器传递给操作

JAX*_*JAX 3 asp.net-mvc

我一直在尝试使用ActionFilter将TempData传递给动作:

filterContext.Controller.TempData.Add("Key","Value");
Run Code Online (Sandbox Code Playgroud)

但是,似乎没有TempData传递给操作,因为我不断收到Object not referenced to an instance of the object错误.

这是从ActionFilter将TempData传递给控制器​​的正确方法吗?如果没有,我该怎么做?

Kar*_*sla 10

这将有效: -

答案1:

过滤器: -

public class MyCustomAttribute : ActionFilterAttribute
{
  public override void OnActionExecuting(ActionExecutingContext filterContext)
  {
    filterContext.RouteData.Values.Add("Key","Value");
  }
}
Run Code Online (Sandbox Code Playgroud)

控制器: -

[MyCustom]
public ActionResult Index()
{
    TempData["Key"] = RouteData.Values["Key"];

    return View();
}
Run Code Online (Sandbox Code Playgroud)

答案2:

过滤器: -

public class MyCustomAttribute : ActionFilterAttribute
{
    public override void OnActionExecuting(ActionExecutingContext filterContext)
    {
        filterContext.Controller.TempData.Add("Key","Value");
    }
}
Run Code Online (Sandbox Code Playgroud)

控制器: -

[MyCustom]
public ViewResult Index()
{
    string Tempval = TempData["Key"].ToString();
    return View();
}
Run Code Online (Sandbox Code Playgroud)