Asp.net mvc 调用RedirectToAction后MVC模型为空
在完成POST操作后尝试重定向到操作时,我遇到了NullReferenceException。以下是我尝试的内容的摘要: 发布应用程序后,如果该应用程序有效,我希望客户端重定向到另一个视图(和路由)以进行后续处理Asp.net mvc 调用RedirectToAction后MVC模型为空,asp.net-mvc,Asp.net Mvc,在完成POST操作后尝试重定向到操作时,我遇到了NullReferenceException。以下是我尝试的内容的摘要: 发布应用程序后,如果该应用程序有效,我希望客户端重定向到另一个视图(和路由)以进行后续处理 [HttpPost] public ActionResult SubmitApplication(Application application) { // Do stuff if (!ModelState.IsValid) { return
[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视图中,我有类似于以下内容的代码,尽管它更详细。调用重定向操作后,子应用程序中的模型对象为空并引发异常。我可以理解为什么SubmitApplication视图作为重定向过程的一部分返回,我只是不知道为什么模型为null或者如何设置它。最后,可能是因为重定向从未真正发生,所以从未达到目标操作
@if (Model.HasSomething)
{
...
}
我做错了什么?有更好的方法吗?RedirectToAction中的第二个参数不是针对模型,而是针对RouteValue
要临时维护重定向结果的状态,需要将数据存储在TempData中 在调用RedirectToAction后说
时,模型对象为null并引发异常,我不太清楚你的意思。
,因为在代码中,你表明在调用RedirectToAction后,你没有对模型做任何事
您的意思是模型在ApplicationReview视图中为空吗
编辑:
空引用异常表示正在取消引用变量。没有任何东西可以解除对模型的引用。如果您发布堆栈跟踪,可能会有所帮助。请注意,如果您使用TempData,并且用户以某种方式刷新页面(例如F5),TempData项将消失。这就是为什么我发现TempData在MVC中是最没有价值的东西,除非在非常罕见的情况下,否则不应该使用它。这种情况非常罕见,我甚至想不出使用它的理由来解决这个问题。顺便说一下,路由值会将这些值添加到查询字符串中(如果它们没有在路由中定义)因此,它们将被绑定到被调用操作的参数列表。@MystereMan:我认为当您执行Post重定向Get并需要向目标操作发送一些数据时,TempData非常有用。不,它不是。同样,如果在get之后刷新页面,则在TempData中发送的数据将消失,因此刷新将不会具有在TempData中发送的状态。它可以工作,但不可靠。@Tuan我理解,我试图传递目标路线而不是模型所需的值。再说一次,我想我也可能做错了。对不起,我没有说得更清楚。执行SubmitApplication操作方法后,将在SubmitApplication视图中引发异常。据我所知,ApplicationReview操作从未实际调用,因此关联的视图从未呈现。