2

try-block内の問題が発生した場合に、あるコントローラーから別のコントローラーへのアクションにリダイレクトしようとしています。私が達成したいのは、ホームコントローラーのエラー処理ActionResultにすべてのエラーを送信することにより、さまざまなコントローラーで問題が発生した場合にユーザーにビューを表示する一般的な方法です。これは基本的にコードがどのように見えるかです:

    try
    {
        Code that may go wrong
    }
    catch (Exception e)
    {
        set the errorcode (integer)

        Logg the error (write a simple textfile)

        RedirectToAction("ErrorHandling", "Home", errorcode);
    }

そして、ホームコントローラーで、何かがうまくいかなかったことをユーザーに伝えるビューを生成したいと思います。

    public ActionResult ErrorHandling(int errorcode)
    {
        do something with the errorcode

        return View(different view depending on errorcode);
    }

私の問題は、例外がスローされるようにコードを操作すると、RedirectToActionが無視されている場合を除いて、catcblockのすべてのステップが実行されることです。私は何が欠けていますか?私はこれに少し慣れていないので、うまくいけば、私が見つけることができなかった簡単な答えがあります...

4

1 に答える 1

2

あなたのキャッチブロックで試してみてください

  return new RedirectToRouteResult(new RouteValueDictionary
    { 
        {"Controller", "Home"}, 
        {"Action", "ErrorHandling"},
        {"errorcode", errorcode}
    });

たぶん、あなたは単にあなたのコードのリターンを忘れました:

return RedirectToAction("ErrorHandling", "Home", errorcode);
于 2011-11-25T14:28:55.053 に答える