2

私は着陸としてデフォルトのアクションを持つホームコントローラーを持っています。

ただし、ErrorController の場合、デフォルトのアクションは index にする必要があります

Global.cs の RegisterRoutes メソッドでは、次のように記述しました。

        routes.MapRoute(
            "Default", // Route name
            "{controller}/{action}/{id}", // URL with parameters
            new { controller = "Home", action = "Landing", id = UrlParameter.Optional }

しかし、 Application_Error イベントからエラーにリダイレクトしようとすると: -

Exception error = Server.GetLastError();                    
string redirectUrl = "~/Error/id=" + errorId;
HttpContext.Current.Server.ClearError();
HttpContext.Current.Response.Redirect(redirectUrl);

エラーをスローしています - アクションの着陸が見つかりません。

4

2 に答える 2

3

より具体的なエラーケースのために、現在のルートの上に別のルートを追加するだけです:

routes.MapRoute(
            "Error", // Route name
            "Error/{action}/{id}", // URL with parameters
            new { action = "Index", id = UrlParameter.Optional }

また、これは少し奇妙に見えます:

string redirectUrl = "~/Error/id=" + errorId;

それはもっとこれになるようです:

string redirectUrl = "~/Error?id=" + errorId;
于 2013-04-05T11:06:47.173 に答える
0

これを別のルート マッピング メソッドの前に配置すると、エラー コントローラーに別のデフォルト アクションが与えられます。ここでは順序が重要です。ルートは先着順で照合されます。

routes.MapRoute(
        "Error", // Route name
        "Error/{action}/{id}", // URL with parameters
        new { controller = "Error", action = "index", id = UrlParameter.Optional }
于 2013-04-05T11:09:21.600 に答える