さて、私は宿題をしてSOを検索しました。実際、同様の質問を見つけましたが、私が得ている動作を報告していません。
これが取り引きです、私はルートを定義しました:
routes.MapRoute("CategoryName", "Category/Name/{text}",
new { controller = "Category", action = "Name", text = "" });
ここでのひねりは次のとおりです。
この URL:http://www.url.com/Category/Name/existingCategoryName
そして、このURL:http://www.url.com/Category/Name/anotherExistingCategoryName
両方の URLは同じコントローラー メソッドに送られる必要public ActionResult Name(string text)
がありますが、悲しいことに、最初の URL はデフォルトのIndex
メソッドに送られ、2 番目の URL は正しくルーティングされています。
私は数年間 .net mvc を使用しており、この動作を経験したことがないので、なぜこれが起こるのだろうか。
補足として、ここにいくつかの事実があります:
- さまざまなメソッドにルーティングされているため、それらの内部のコードがそれと関係があるとは思えません。
- カテゴリ名としてDBに存在しないものにカテゴリを手動で書き込むと、
Name
メソッドを通過します。 - パターンに一致する最初のルートが勝つことを知っているので、ルートは正しく配置されています。
CategoryName
ルートを最初に配置しようとしても、動作は同じです。- に各リンクを記述するとき
Category/Index
は、同じ@Html.RouteLink()
ヘルパーを使用するため、すべてのリンクが同じ方法でフォーマットされます。
前もって感謝します!