1

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

发布应用程序后,如果应用程序有效,我希望客户端重定向到另一个视图路由)以进行后续流程。

[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视图中的Model对象为 null 并引发异常。我可以理解为什么SubmitApplication视图作为重定向过程的一部分返回,我只是无法弄清楚为什么模型为空或如何设置它。最后,可能永远不会到达目标 Action,因为重定向从未真正发生过。

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

我究竟做错了什么?有一个更好的方法吗?

4

2 回答 2

2

RedirectToAction 中的第二个参数不是针对模型,而是针对 routeValues。

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

于 2012-05-04T23:30:42.500 回答
0

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

您的意思是模型在您的 ApplicationReview 视图中为空吗?

编辑:

空引用异常表示正在取消引用该变量。没有任何东西可以取消对该模型的引用。也许如果您发布堆栈跟踪它会有所帮助。

于 2012-05-05T00:33:29.970 回答