我在完成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)
{
...
}
我做错了什么?有更好的方法吗?
答案 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吗?
编辑:
空引用异常表示正在取消引用变量。那里没有什么可以取消引用该模型。也许如果您发布了堆栈轨道,它会有所帮助。