【问题标题】:RedirectToAction not calling actionRedirectToAction 不调用动作
【发布时间】:2019-05-29 12:15:43
【问题描述】:

为什么 Index 操作没有在 RedirectToAction 上调用 Foo?我放了一个断点,它似乎没有达到这个动作。应该注意的是,我的模型状态是有效的,所以这不是问题。

    [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();
    }

【问题讨论】:

  • ModelState.IsValid?在那里打个断点,看看表达式。
  • @BeiBeiZHU 断点未调用...未命中...模型状态有效返回
  • 确保您所做的一切都是正确的。这里是 Msdn 帮助:docs.microsoft.com/en-us/dotnet/api/…
  • @德罗巴去哪回?返回视图还是返回 RedirecToAction?顺便说一句,我记得 tempData 只能存储字符串,不能存储对象,你先尝试序列化它。
  • @BeiBei ZHU 无需序列化。 Tempdata 使用 TempDataDictionary。您尝试返回的视图是否真的存在?

标签: c# asp.net-core


【解决方案1】:

如果您使用的是相同的控制器或者如果您不想要重定向 只是返回视图。因为我在我的演示应用程序中检查了您的代码并尝试重现您的问题。但是你的代码工作正常

[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();
}

【讨论】:

    猜你喜欢
    • 2022-10-08
    • 1970-01-01
    • 2013-06-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多