Jak mogę utworzyć przyjazny adres URL w ASP.NET MVC?

Jak wygenerować przyjazne adresy URL w ASP.NET MVC Framework? Na przykład mamy adres URL, który wygląda tak:

http://site/catalogue/BrowseByStyleLevel/1

1 to identyfikator poziomu badania (wyższy w tym przypadku) do przeglądania, ale lubię sformatować adres URL w taki sam sposób, jak robi to StackOverflow.

Na przykład, te dwa adresy URL zaprowadzą cię w to samo miejsce:

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

Https://stackoverflow.com/questions/119323/

EDIT: przyjazna część adresu url jest określana jako slug.

Author: Community, 2008-10-20

3 answers

Istnieją dwa kroki, aby rozwiązać ten problem. Najpierw Utwórz nową trasę lub zmień domyślną trasę, aby zaakceptować dodatkowy parametr:

routes.MapRoute(  "Default", // Route name
                   "{controller}/{action}/{id}/{ignoreThisBit}", 
                   new { controller = "Home", 
                         action = "Index", 
                         id = "",
                         ignoreThisBit = ""}  // Parameter defaults )

Teraz możesz wpisać cokolwiek chcesz na końcu swojego URI, a aplikacja go zignoruje.

Podczas renderowania linków należy dodać tekst "przyjazny":

<%= Html.ActionLink("Link text", "ActionName", "ControllerName",
                    new { id = 1234, ignoreThisBit="friendly-text-here" });
 48
Author: Craig Stuntz,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-10-20 13:15:29

/ Align = "left" / asax

  routes.MapRoute(
                    "Default", // Route name
                    "{controller}/{action}/{id}", // URL with parameters
                    new { controller = "Home", action = "Index", id = ""} 
                    // Parameter defaults )

Możesz zdefiniować własną trasę jak:

Controller jest klasą cs wewnątrz folderu controllers.

Możesz zdefiniować swój IDENTYFIKATOR-z wybraną nazwą.

System przekaże wartość do metody actionResult.

Możesz przeczytać więcej o tym kroku tutaj: http://www.asp.net/learn/mvc/tutorial-05-cs.aspx

 1
Author: Moran,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-10-20 10:20:53

W ten sposób zaimplementowałem adres URL slug w mojej aplikacji. Uwaga: domyślna mapa nie powinna być zmieniana, a trasy są przetwarzane w kolejności, w jakiej są dodawane do listy tras.

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="" });
 1
Author: Hamid,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-07-28 21:38:29