1

私は Asp net MVC カミソリ Web アプリケーションに取り組んでいます。URL書き換えを実装しようとしています。

私のURLは

/User/CategoryDetail?cid=2&lid=b20319e0-55b1-4233-8c63-c35b98c79a84

しかし、私はそれが次のようになりたい

/User/CategoryDetail/[CategoryName]OR[LocationName]

これを実装するためのソリューションを提案できますか。前もって感謝します。

4

1 に答える 1

1

CategoryName がオプションで、LocationName が必須フィールドの場合、Satpal の提案は機能します。両方のフィールドがオプションの場合、機能しません。ルーティングでは、どのプロパティが提供されているかを判断できないためです。このような場合、2 つのオプションがあります。1 つのオプションは、パラメーターと IRouteConstraints のさまざまな組み合わせに対して 3 つの異なるルートを定義することです。

routes.MapRoute(name: "CategoryDetail",
url: "/{controller}/{CategoryDetail}/{LocationName}",
defaults: new { controller = "User", action = "Login" },
constraints: {LocationName=@"^\d+$"}
);   

routes.MapRoute(name: "CategoryDetail",
url: "/{controller}/{CategoryDetail}/{CategoryName}",
defaults: new { controller = "User", action = "Login" },
constraints: {CategoryName= new GuidConstraint() }
);   

routes.MapRoute(name: "CategoryDetail",
url: "/{controller}/{CategoryDetail}/{LocationName}/{CategoryName}",
defaults: new { controller = "User", action = "Login", CategoryName = UrlParameter.Optional }
);   

GuidConstraint については、こちらをご覧ください

于 2013-08-28T14:49:54.893 に答える