RedirectToAction не вызывает действие - PullRequest
0 голосов
/ 29 мая 2019

Почему действие Index не вызывает Foo для RedirectToAction? Я поставил точку останова, и это, похоже, не влияет на это действие. Следует отметить, что мое состояние модели является действительным, поэтому проблема не в этом.

    [HttpPost]
    public ActionResult Index(Home model)
    {
        if (!ModelState.IsValid)
        {
            return View(model);
        }
        TempData["model"] = model;
        return RedirectToAction("Foo");
    }

    public ActionResult Foo()
    {
        Home model = (Home)TempData["model"];
        return View();
    }

Ответы [ 2 ]

0 голосов
/ 29 мая 2019

если вы используете тот же контроллер в качестве альтернативы, если вы не хотите перенаправления Просто верните вид. потому что я проверил ваш код в своем демонстрационном приложении и попытался воспроизвести вашу проблему. но твой код работает нормально

[HttpPost]
    public ActionResult Index(Home model)
    {
        if (!ModelState.IsValid)
        {
            return View(model);
        }
        TempData["model"] = model;
        return View("Foo");
    }

Если он не работает, вы можете проверить свои маршруты и убедиться, что нет специальных маршрутов, которые могли бы привести к поломке. Или внутри вашего Global.asax добавьте этот метод и отладьте.

protected void Application_Error(object sender, EventArgs e)
{
    Exception ex = Server.GetLastError();
}
0 голосов
/ 29 мая 2019

Может быть, вы можете попробовать

[HttpGet]
public ActionResult Foo()
{
    Home model = (Home)TempData["model"];
    return View();
}

Тогда вы можете использовать 3 способа для перенаправления

RedirectToAction("ActionName", "ControllerName"); // if calling from other controller

return RedirectToAction("ActionName");

return Redirect("/ControllerName/ActionName"); 

Дайте мне знать, если у вас все еще есть проблемы

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...