Pergunta

Como faço para gerar URLs amigáveis ??dentro do MVC Framework ASP.NET? Por exemplo, nós temos uma URL parecida com esta:

http://site/catalogue/BrowseByStyleLevel/1

A 1 é Id do nível de estudo (superior, neste caso) para navegar, mas I'l como reformatar o URL da mesma forma StackOverflow faz isso.

Por exemplo, estes dois URLs irá levá-lo para o mesmo lugar:

https://stackoverflow.com/questions/119323/nested-for-loops -in-diferentes-línguas

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

EDIT:. A parte amigável do url é referido como um lesma

Foi útil?

Solução

Existem dois passos para resolver este problema. Primeiro, crie uma nova rota ou alterar a rota padrão para aceitar um parâmetro adicional:

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

Agora você pode digitar o que você quer no final do seu URI eo aplicativo irá ignorá-lo.

Quando você processar os links, você precisa adicionar o texto "friendly":

<%= Html.ActionLink("Link text", "ActionName", "ControllerName",
                    new { id = 1234, ignoreThisBit="friendly-text-here" });

Outras dicas

Isto é como eu ter implementado o URL lesma sobre o meu pedido. Nota:. O padrão MapRoute não deve ser alterado e também as rotas são processados ??na ordem em que são adicionados à lista de rotas

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="" });

você tem uma rota no global.asax

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

Você pode definir seu próprio caminho como:

controlador é a classe cs dentro da pasta dos controladores.

Você pode definir seu id -. Com o nome que você escolher

o sistema vai passar o valor para o seu método ActionResult.

Você pode ler mais sobre este passo aqui: http: // www.asp.net/learn/mvc/tutorial-05-cs.aspx

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top