私はいくつかのプロジェクト管理システムを持っています。プロジェクトを開きたい場合はid=123
、アドレスを使用してコントローラー アクションにリダイレクトします。
http://myhost:67845/Projects/id=123
次のような同じアクションにユーザーフレンドリーなリンクを使用するにはどうすればよいですか:
http://myhost:67845/Projects/John-can-develop-asp-net-site-for-you
私はいくつかのプロジェクト管理システムを持っています。プロジェクトを開きたい場合はid=123
、アドレスを使用してコントローラー アクションにリダイレクトします。
http://myhost:67845/Projects/id=123
次のような同じアクションにユーザーフレンドリーなリンクを使用するにはどうすればよいですか:
http://myhost:67845/Projects/John-can-develop-asp-net-site-for-you
デフォルトのルーティングを使用するhttp://myhost:67845/Projects/123
ことで、123 が id として扱われるため、そのまま使用できます。
ただし、そのようなわかりやすい名前が必要な場合は、コントローラーを変更する必要があります。
2 番目のケースでは、Projects コントローラ (デフォルト ルーティング用) で、これは Index というメソッドによって処理されます。このメソッドにはプロパティが必要string id
です。
次に、メソッド内で と 123 の間で変換する方法が必要ですJohn-can-develop-asp-net-site-for-you
。これは、John-can-develop-asp-net-site-for-you がプロジェクト 123 の名前であるか、わかりやすいものを保存する必要があるかのいずれかです。データベース内の名前も変換してください。
デフォルトルートを更新できます:
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute(
"Default",
"{controller}/{action}/{title}",
new {
controller = "Home",
action = "Index",
title = UrlParameter.Optional
}
);
}
次に、タイトルを引数として受け取るコントローラーアクションを用意します
public ActionResult Index(string title)
{
...
}