Передать TempData в ActionFilter RedirectToAction

Я хочу установить ViewBag для второго действия из первого действия с помощью ActionFilter.

В первом действии я делаю следующее:

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"] всегда имеет значение null.

Я следил за этой статьей.


person Tristan Sébillet    schedule 05.02.2020    source источник
comment
Я уже пытаюсь получить TempData в методе OnActionExecuting. Но я все еще нулевой.   -  person Tristan Sébillet    schedule 05.02.2020
comment
Используете ли вы services.AddSession() и app.UseSession() в конфигурации Startup?   -  person silkfire    schedule 05.02.2020
comment
Да, я использую оба в моей конфигурации запуска.   -  person Tristan Sébillet    schedule 05.02.2020
comment
@TristanSébillet Попробуйте TempData.Keep или TempData.Peek и посмотрите, будет ли это иметь значение   -  person silkfire    schedule 05.02.2020
comment
Пробовал и то и другое, разницы нет.   -  person Tristan Sébillet    schedule 05.02.2020


Ответы (1)


После некоторой попытки в моем коде нет ошибок, кроме конфигурации запуска.

В Startup.Configure() app.UseCookiePolicy() должен быть после app.UseMVC(), чтобы работать должным образом.

person Tristan Sébillet    schedule 05.02.2020