调用RedirectToAction后,MVC Model为null

时间:2012-05-04 23:09:58

标签: asp.net-mvc

我在完成POST操作后尝试 RedirectToAction 时遇到NullReferenceException。以下是我正在尝试的内容摘要:

应用程序POST后,如果应用程序有效,我希望客户端重定向到另一个查看路由 )后续流程。

[HttpPost]
public ActionResult SubmitApplication(Application application)
{
    // Do stuff

    if (!ModelState.IsValid)
    {
        return View(application);
    }

    // Create and set variables for the next route

    return RedirectToAction("ApplicationReview", new
    {
        x = "foo",
        y = "bob"
    });
}

[HttpGet]
public ActionResult ApplicationReview(string x, string y)
{
    // Do stuff using x and y as keys

    return View();
}

SubmitApplication 视图中,我有类似以下的代码,虽然它更精细。调用 RedirectToAction 后, SubmitApplication 视图中的模型对象为空,并引发异常。我可以理解为什么 SubmitApplication 视图作为重定向过程的一部分返回,我只是无法弄清楚为什么Model为null或如何设置它。最后,从未达到目标Action,大概是因为重定向从未真正发生过。

@if (Model.HasSomething)
{ 
    ...
}

我做错了什么?有更好的方法吗?

2 个答案:

答案 0 :(得分:2)

RedirectToAction中的第二个参数不适用于模型,而是适用于routeValues。

要暂时维护重定向结果的状态,您需要将数据存储在TempData中。

答案 1 :(得分:0)

当你说After the RedirectToAction is called the Model object is null and throws an exception.时,我有点不清楚你的意思,因为在你给出的代码中,你在调用RedirectToAction后没有对模型做任何事情。

您的意思是ApplicationReview视图中的Model为null吗?

编辑:

空引用异常表示正在取消引用变量。那里没有什么可以取消引用该模型。也许如果您发布了堆栈轨道,它会有所帮助。