アプリのルートを次のように変更するというこの目標を達成しようとしています。
hxxp://host/MyController/Widgets/3/AddWhatsit
このルートのビューは、ユーザーがウィジェット 3 に Whatsit を追加するのに役立ちます。
同様に、新しいウィジェットを作成するルートは次のようになると思います。
hxxp://host/MyController/Widgets/Create
これを容易にするために、別のルートを作成しました。彼らです:
routes.MapRoute("DefaultAction",
"{controller}/{action}",
new {controller = "Home", action = "Index"});
routes.MapRoute("Default",
"{controller}/{id}/{action}",
new {controller = "Home", action = "Index", id = UrlParameter.Optional});
私が抱えている問題は、ウィジェットのインデックス ページ (/MyController/Widgets、「DefaultAction」ルートに一致する) を参照すると、そのルートの一部ではない新しい URL パラメーターを導入するすべての ActionLinks がクエリ文字列に変換されることです。価値。したがって、たとえば、ウィジェット 3 の編集リンクは次のようにレンダリングされます:
Widget/Edit?id=3
instead of (what I would prefer):
Widget/3/Edit
ルートの最後に(オプションの) id パラメータを付けないことで、物事を台無しにしていることを理解していると思います。
私はそれを吸い上げて、ルートの最後に id を残すべきですか?