ASP.NET MVCフレームワーク内でわかりやすいURLを生成するにはどうすればよいですか?たとえば、次のようなURLがあります。
http:// site/catalogue/BrowserByStyleLevel/1
1は参照するスタディレベル(この場合は上位)のIDですが、StackOverflowと同じ方法でURLを再フォーマットしたいと思います。
たとえば、次の2つのURLを使用すると、同じ場所に移動できます。
https://stackoverflow.com/questions/119323/nested-for-loops-in-different-languages
EDIT:URLのフレンドリ部分は、スラッグと呼ばれます。
この問題を解決するには2つのステップがあります。まず、新しいルートを作成するか、デフォルトルートを変更して追加のパラメーターを受け入れます。
routes.MapRoute( "Default", // Route name
"{controller}/{action}/{id}/{ignoreThisBit}",
new { controller = "Home",
action = "Index",
id = "",
ignoreThisBit = ""} // Parameter defaults )
これで、URIの最後に好きなものを入力でき、アプリケーションはそれを無視します。
リンクをレンダリングするときは、「わかりやすい」テキストを追加する必要があります。
<%= Html.ActionLink("Link text", "ActionName", "ControllerName",
new { id = 1234, ignoreThisBit="friendly-text-here" });
これが、アプリケーションにスラッグURLを実装した方法です。 注:デフォルトのMaprouteは変更しないでください。また、ルートはルートリストに追加された順序で処理されます。
routes.MapRoute(
"Default", // Route name
"{controller}/{action}/{id}", // URL with parameters
new { controller = "Home",
action = "Index",
id = UrlParameter.Optional
} // Parameter defaults
);
routes.MapRoute("Place", "{controller}/{action}/{id}/{slug}", new { controller = "Place", action = "Details", id = UrlParameter.Optional,slug="" });
global.asaxにルートがあります
routes.MapRoute(
"Default", // Route name
"{controller}/{action}/{id}", // URL with parameters
new { controller = "Home", action = "Index", id = ""}
// Parameter defaults )
次のように独自のルートを定義できます。
controllerは、controllersフォルダー内のcsクラスです。
選択した名前でIDを定義できます。
システムは値をactionResultメソッドに渡します。
このステップの詳細については、こちらをご覧ください: http://www.asp.net/learn/mvc/tutorial-05-cs.aspx