1

カスタムルートを追加したいのですが、うまくいきません。特定のコントローラーにヒットする場合を除いて、通常のルーティングを使用して、idの代わりに別のオプションのパラメーターを使用したいと思います。

私の地域では、これは存在します:

context.MapRoute(
     "Admin_default",
     "Admin/{controller}/{action}/{id}",
     new { action = "Index", id = UrlParameter.Optional }
     );

その上に私は追加しようとしました:

context.MapRoute(
           "Admin_Users",
           "Admin/Users/{action}/{username}",
           new { action = "Index", username = UrlParameter.Optional }
       );

そしてコードでは、私は次のようにページを呼び出します:

@Html.ActionLink("Edit", "Edit", new { username=user.UserName })

動作しますが、リンクは/ Admin / Users / Edit /?usernameとして表示されます

そして私が欲しい:/ Admin / Users / Edit / username

ただし、他のすべてのページでも同じルートを維持したいと思います。つまり、次のようになります。

/Admin/Shop/Products/Edit/1

デフォルトのルーティングを使用します

編集

ルートにcontroller="Users"を追加することで、機能するようになりました。

context.MapRoute(
       "Admin_Users",
       "Admin/Users/{action}/{username}",
       new { controller="Users", action = "Index", username = UrlParameter.Optional }
   );

これがURL部分(上の行)のポイントだと思いましたか?

4

1 に答える 1

1

コードは正しいですが、注文は正しくありません。

ASP.NET MVCは、適用される最初のルートを使用します。あなたの場合、一般的なルートが適用されます。順序を変更すると、「Admin / User/...」ルートの優先順位が高くなります。

于 2013-01-17T06:31:28.200 に答える