2

次のルートを指定しました。

routes.MapRoute(
            "myRoute1", 
            "{controller}/{action}/{id}", 
            new { controller = "Home", action = "Index", id = UrlParameter.Optional });

routes.MapRoute(
             "myRoute2", 
             "public/{controller}/{action}/{id}", 
              new { controller = "PublicHome", action = "Index", id = UrlParameter.Optional });

そして、次のURLが機能することを期待します

[http://localhost:58658/public]

url では、コントローラーとアクションのデフォルト値を指定しmyRoute2まし[/public]たが、これは機能していないようです。何か案は ?

ありがとう

4

3 に答える 3

3
routes.MapRoute(
            "myRoute1", 
            "public/{controller}/{action}/{id}", 
            new { controller = "PublicHome", action = "Index", id = UrlParameter.Optional });

RouteDebuggerをインストールします。これにより、特定のURLでルートがヒットするかどうかがわかります。

複数のルートを照合している場合は、最初のルートが処理されます。RouteDebuggerはすべての一致を表示します。それらを適切に並べ替えるのはあなた次第です。

ROuteDebuggerが404ページで機能しない場合は、カスタムエラーをオンにします。例:

<customErrors mode="On" defaultRedirect="err/index">
  <error statusCode="404" redirect="err/notfound" />
</customErrors>`
于 2012-07-25T09:26:35.100 に答える
2

ルート宣言の順序を変更します。最初の (デフォルト) ルートは URL と一致し、PublicController を検索します。

于 2012-07-25T10:22:25.787 に答える
0

これはパラメータではないため、ルート内のパブリックの周りに中括弧を配置するべきではありませんでした。

于 2012-07-25T09:26:14.287 に答える