0

さて、私は宿題をして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()ヘルパーを使用するため、すべてのリンクが同じ方法でフォーマットされます。

前もって感謝します!

4

1 に答える 1

0

-失敗したルートで標識を使用していますか?

おそらく、ルーティング デバッガーで詳細情報を見つけることができます

そして、この質問を見ることができるかもしれません: Failing ASP.NET MVC route. これはバグですか、それともまれなケースですか?

Phil Haack は、 ASP.NET ルーティング: トークン間のリテラル サブセグメント、およびリテラル サブセグメントの文字を使用して値をルーティングすることで、問題に対する可能な回答も提供します。

于 2012-04-15T08:57:45.980 に答える