1

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ビューのModelオブジェクトは null になり、例外がスローされます。SubmitApplication View がリダイレクト プロセスの一部として返される理由はある程度理解できますが、Model が null である理由や設定方法がわかりません。最終的に、おそらくリダイレ​​クトが実際に発生しなかったため、ターゲット Action に到達することはありません。

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

私は何を間違っていますか?これを行うより良い方法はありますか?

4

2 に答える 2

2

RedirectToActionの2番目のパラメーターはモデル用ではなく、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 ビューでモデルが null であることを意味しますか?

編集:

null 参照例外は、変数が逆参照されていることを示します。モデルを逆参照するものは何もありません。おそらく、スタック トラックを投稿すると役立つでしょう。

于 2012-05-05T00:33:29.970 に答える