39

ASP.NET MVC フレームワーク内でわかりやすい URL を生成するにはどうすればよいですか? たとえば、次のような URL があります。

http://site/catalog/BrowseByStyleLevel/1

1 は閲覧する学習レベル (この場合は高) の ID ですが、StackOverflow と同じように URL を再フォーマットしたいと思います。

たとえば、次の 2 つの URL は同じ場所に移動します。

https://stackoverflow.com/questions/119323/nested-for-loops-in-different-languages

https://stackoverflow.com/questions/119323/

編集: URL のわかりやすい部分はslugと呼ばれます。

4

3 に答える 3

52

この問題を解決するには、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" });
于 2008-10-20T13:15:29.807 に答える
3

これが、アプリケーションにスラッグ 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="" });
于 2011-07-28T21:38:29.467 に答える
1

あなたは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 を参照してください。

于 2008-10-20T10:20:53.593 に答える