3

コントローラーの各メソッドは、インデックス ページにリダイレクトし、ポストされたモデル オブジェクトをコントローラーに送信する必要があります。ただし、あるインスタンスでは、モデル オブジェクトと共にエラー メッセージを送信する必要があります。以下は Index メソッドのシグネチャです。

    public ViewResult Index(ZipCodeIndex search, string unspecifiedAction = "")

1 つのメソッドからのエラー メッセージのみが必要なので、このパラメーターをオプションにしました。別のアクションからインデックスにリダイレクトしようとしている方法は次のとおりです。

        //the parameter 'updateZip' is a model object of type ZipCodeIndex
        return RedirectToAction("Index", new { search = updateZip, unspecifiedAction = "Error: Action could not be determined. IT has been notified and will respond shortly."} );

結局、ユーザーは元のページに戻り、「オブジェクト参照がオブジェクトのインスタンスに設定されていません」というエラー メッセージが表示されます。

編集

コントローラーがヒットした後、RedirectToActionIndex メソッドにリダイレクトせずにコントローラーを終了するだけで、「オブジェクト参照がオブジェクトのインスタンスに設定されていません」というエラーがビューに表示されます。

4

1 に答える 1

4

ではクラス オブジェクトを渡すことができないRedirectToActionため、パラメータを削除しsearch = updateZipます。

必要な場合。TempData代わりに渡すことができます

アクションを次のように変更します

public ViewResult Index(string unspecifiedAction = ""){
      var search = (ZipCodeIndex)TempData["ZipCodeIndexData"];
      //rest of code
}

リダイレクトするには

TempData["ZipCodeIndexData"] = updateZip;
return RedirectToAction("Index", new { unspecifiedAction = "Error: Action could not be determined. IT has been notified and will respond shortly."} );
于 2013-10-04T18:44:23.890 に答える