カスタムルートを追加したいのですが、うまくいきません。特定のコントローラーにヒットする場合を除いて、通常のルーティングを使用して、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部分(上の行)のポイントだと思いましたか?