【问题标题】:Pass TempData to ActionFilter RedirectToAction将 TempData 传递给 ActionFilter RedirectToAction
【发布时间】:2020-02-05 14:39:00
【问题描述】:

我想使用 ActionFilter 为第一个动作的第二个动作设置一个 ViewBag。

在第一个动作中,我执行以下操作:

TempData["Test"] = "Test"; 
return RedirectToAction("Action2", new { values = values });

然后在 IActionFilter 中:

public class HelpertestActionFilter : IActionFilter
{
    public void OnActionExecuted(ActionExecutedContext context)
    {
    }

    public void OnActionExecuting(ActionExecutingContext context)
    {
        var controller = context.Controller as Controller;
        if (controller != null)
        {
            if (controller.TempData["Test"] != null)
            {
                controller.ViewBag.Notification = controller.TempData["Test"];
            }
        }
    }
}

但在 ActionFilter OnActionExecuting 中,TempData["Test"] 始终为空。

我关注了这个article

【问题讨论】:

  • 我已经尝试在 OnActionExecuting 方法中获取 TempData。但我仍然为空。
  • 您是否在Startup 配置中使用services.AddSession()app.UseSession()
  • 是的,我在我的启动配置中都使用了。
  • @TristanSébillet 试试TempData.KeepTempData.Peek 看看会不会有什么不同
  • 两种都试过了,没什么区别。

标签: c# .net-core viewbag action-filter tempdata


【解决方案1】:

经过一番尝试,我的代码没有错误,除了启动配置。

在 Startup.Configure() 中,app.UseCookiePolicy() 必须在 app.UseMVC() 之后才能按预期工作。

【讨论】:

    猜你喜欢
    • 2017-05-20
    • 2014-04-05
    • 2012-12-07
    • 2012-04-28
    • 2014-03-23
    • 2022-08-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多