Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/261.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net mvc 调用RedirectToAction后MVC模型为空_Asp.net Mvc - Fatal编程技术网

Asp.net mvc 调用RedirectToAction后MVC模型为空

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

在完成POST操作后尝试重定向到操作时,我遇到了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视图中,我有类似于以下内容的代码,尽管它更详细。调用重定向操作后,子应用程序中的模型对象为空并引发异常。我可以理解为什么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操作从未实际调用,因此关联的视图从未呈现。