0

製品サイトを構築しており、ASP.NET WebForms C# でルートを使用しています。現在、

routes.MapPageRoute("", "{categoryName}", "~/Category.aspx");
routes.MapPageRoute("", "{categoryName}/{subCategoryname}", "~/SubCategory.aspx"); 

それは素晴らしい作品..

シューズ/レディース、シューズ/キッズ、ブーツ/メンズ、ブーツ/レディース。

次の結果を得ることを期待して、新しいルートを追加しました

製品/マウンテンライト-メンズ-ハイキング-ブーツ

これで、ルーターは

routes.MapPageRoute("", "{categoryName}", "~/Category.aspx");
routes.MapPageRoute("", "{categoryName}/{subCategoryname}", "~/SubCategory.aspx"); 
routes.MapPageRoute("", "Product/{productName}", "~/Product.aspx");

ただし、/Product/Mountain-Light-Mens-Hiking-Bootsに移動すると、ルーターはSubCategory.aspxを起動しますが、これは望んでいたことではありません。Product.aspxを起動します。

「Prodcut」がカテゴリ名かどうかをルーターが認識していないことは理解しています。

/Products に別のルート レベル ルーティングを追加するにはどうすればよいですか?

4

1 に答える 1

2

このようにコードの順序を変更します

routes.MapPageRoute("", "Product/{productName}", "~/Product.aspx");
routes.MapPageRoute("", "{categoryName}/{subCategoryname}", "~/SubCategory.aspx"); 
routes.MapPageRoute("", "{categoryName}", "~/Category.aspx");

順序は非常に重要です。「www.domain.com/abc/abc」のようにURLを入力するため、

routes.MapPageRoute("", "{categoryName}/{subCategoryname}", "~/SubCategory.aspx"); 

3番目に。その後、このルートは呼び出されませんでした。次のルートを呼び出します。

routes.MapPageRoute("", "{categoryName}", "~/Category.aspx");

そして価値はあるでしょう。

string Value= Page.RouteData.Values["categoryName"].ToString();
Value= "abc/abc";

したがって、1 つのパラメーターを含む URL パターンは、ルート コレクションに配置する必要があります。

于 2013-03-07T20:30:38.217 に答える