2

Asp.netmvc3アプリケーションで作業しています。次のような製品詳細ページのURLを作成しました。

routes.MapRoute(
   "ProductDetail",
   "{category}/{title}-{id}",
   new { controller = "ProductDetail", action = "Index" }
); 

これを使用する他のコントローラーの場合

routes.MapRoute(
  "Default",   
  "{controller}/{action}/{id}",    
  new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);

このURLを作成する次のコード

www.example.com/Shoes/blackshoes-100

問題は、他のコントローラーとアクション名を追加すると、このURLがProductDetailページに使用され、このようなProductDetailページにリダイレクトされることです。

www.example.com/Home/Index-100

ProductDetailページのこのURLを制限するにはどうすればよいですか?

これを行うためのこれは正しい方法ですか?

Controller and ActionofProductdetailページを非表示にします。

カテゴリ、タイトル、IDの値は、製品ごとに変更されています。

4

1 に答える 1

1

他のページのルートを定義し、それらのルートをマップしてから、作品の詳細ルートをマップする必要があります。次に、ルート照合メカニズムが最初にそれらを見つけて使用します。

もちろん、アクションごとにルートをマップする必要はありません。たとえば、次の例のように異なるコントローラー用にいくつかのプレフィックスを作成して、Home コントローラー アクションのすべてのルートをキャッチできます。

routes.MapRoute(
    "Home",
    "Home/{action}/{id}",
    new { controller = "Home", action = "Index", id = "" }
);
于 2013-02-22T08:49:52.677 に答える