2011-12-19 4 views
0

私はいくつかのプロジェクト管理システムを持っています。私のように同じアクションのためのユーザーフレンドリーなリンクを使用するにはどうすればよいユーザーフレンドリーなアドレスの使い方は?

http://myhost:67845/Projects/id=123 

http://myhost:67845/Projects/John-can-develop-asp-net-site-for-you 

答えて

1

デフォルトのルーティングを使用すると、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の名前であるか、または変換を行うには、フレンドリ名をデータベースに格納する必要があります。

+0

[OK]をクリックすると、この種のフレンドリーな名前のジェネレータが必要です。これはid = 1の関係を持つためにユニークでなければなりません。 – Oleg

+0

@Oleg - 正しいです。 2つのidのフレンドリ名が同じであれば、そのアドレスはあいまいかもしれません。たとえその名前がユーザーにとってフレンドリーであっても、idが特定のエントリを指し示すように、特定のエントリを指し示す必要があります。 –

1

あなたはデフォルトルートを更新することができ、私は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) 
{ 
    ... 
}