私はいくつかのプロジェクト管理システムを持っています。私のように同じアクションのためのユーザーフレンドリーなリンクを使用するにはどうすればよいユーザーフレンドリーなアドレスの使い方は?
http://myhost:67845/Projects/id=123
:
http://myhost:67845/Projects/John-can-develop-asp-net-site-for-you
私はいくつかのプロジェクト管理システムを持っています。私のように同じアクションのためのユーザーフレンドリーなリンクを使用するにはどうすればよいユーザーフレンドリーなアドレスの使い方は?
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番目のケースでは、プロジェクトコントローラ(デフォルトルーティング用)では、これはIndexというメソッドで処理されます。このメソッドのプロパティはstring id
である必要があります。
John-can-develop-asp-net-site-for-you
と123の間で変換する方法が必要です。これは、John-can-develop-asp-net-site-for-youがプロジェクト123の名前であるか、または変換を行うには、フレンドリ名をデータベースに格納する必要があります。
あなたはデフォルトルートを更新することができ、私はid=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)
{
...
}
[OK]をクリックすると、この種のフレンドリーな名前のジェネレータが必要です。これはid = 1の関係を持つためにユニークでなければなりません。 – Oleg
@Oleg - 正しいです。 2つのidのフレンドリ名が同じであれば、そのアドレスはあいまいかもしれません。たとえその名前がユーザーにとってフレンドリーであっても、idが特定のエントリを指し示すように、特定のエントリを指し示す必要があります。 –