1

MVC サンプル プロジェクトの下に次のルーティング構成があります。

public class RouteConfig
{
    public static void RegisterRoutes(RouteCollection routes)
    {
        routes.MapRoute("", "X{controller}/{action}",
            new { controller = "Customer", action = "List" });

        routes.MapRoute("MyRoute", "{controller}/{action}",
            new { controller = "Home", action = "Index" });
    }
}

すべてのコントローラー (ホーム、顧客) を、現在のコントローラーとアクション名を表示する同じビューにリダイレクトします。

したがって、URLhttp://localhost:5O44O/XCustomerについては、次の出力があります。

コントローラー: 顧客
アクション: リスト

URLhttp://localhost:5O44O/Xについては同じ出力が得られるはずだと思っていました...しかし、そうではありません...

「/」アプリケーションでサーバー エラーが発生しました。

リソースが見つかりません。
説明: HTTP 404。探しているリソース (またはその依存関係の 1 つ) は、削除されたか、名前が変更されたか、一時的に利用できない可能性があります。次の URL を見直して、スペルが正しいことを確認してください。

要求された URL: /X

どうして?「X」条件を最初に配置したので、Customer と List でデフォルトの置換を取得する必要があります ?!

4

1 に答える 1

3

404 errorを持っていないので、あなたは を受け取っていますXController。持っている場合は、次のルートを受け取ります。http://localhost:5O44O/XX

routes.MapRoute("", "X{controller}/{action}"- これは、ルートの文字列を生成するための単なる構文です。そして、期待されていた動作がありません。

すべての操作はここで行う必要があります。

new { controller = "Customer", action = "List" });

そのようなルートが必要な場合: http://localhost:5O44O/X/ListMapRoute を次のように記述する必要があります。

routes.MapRoute("name", "X/{action}",
            new { controller = "Customer", action = "List" });

次のように書くこともできます:

routes.MapRoute("name", "HelloBro",
                new { controller = "Customer", action = "List" });

あなたのルートhttp://localhost:5O44O/HelloBroを返しますList actionCustomer controller

于 2013-09-23T16:10:28.430 に答える