2010-09-01 34 views
10

que estoy tratando de hacer algo como stackoverflowASP.NET MVC enrutamiento/SEO Friendly URL

Tome un enlace desde StackOverflow por ejemplo:

Hidden Features of C#?

si se quita la última parte (Hidden Features of C#?) todavía devuelve el mismo resultado.

Para mi ruta en Global.asax He intentado hacer algo como "{acción}/{id}/{title}"

En mi página, este es mi enlace:

<%= Html.ActionLink(video.Title, "Details", "Videos", new {id = video.ID, title = video.Title.Replace(" ", "-")}, null) %> 

esto hace lo que yo quiero que haga en su mayor parte, excepto que después de la identificación se lanza en "? title = bla-bla-bla"

lo quiero decir "/Identificación del bla-bla-bla "

¿Cuál es mi problema? (Además de ser un novato)

+0

¿Podría publicar todas las rutas en su global.asax.cs? Tal vez se está emparejando otro primero ... – Peter

+0

@Peter de hecho ese fue el caso –

+1

+1 para "¿Cuál es mi problema? (Además de ser un novato)" – Jake

Respuesta

4

Esa ruta parece que debería funcionar con esa llamada a ActionLink, por lo que esta es una pequeña suposición. ¿Estás registrando tu ruta "{acción}/{id}/{título}" después de la ruta predeterminada? Si es así, la ruta predeterminada coincidirá primero, y simplemente ponga el valor del título en la cadena de consulta, ya que no aparece en la ruta. Si registra su ruta personalizada antes del valor predeterminado de {controller}/{action}/{id}, debería funcionar.

+0

Está registrado antes de la ruta predeterminada, sin embargo, me apuntó la dirección correcta. De hecho, se redujo a la secuencia real de las rutas registradas. gracias –

9

me ha escrito una entrada de blog en este hace un tiempo y pensé que podría ser útil:

http://mynameiscoffey.com/2010/12/19/seo-friendly-urls-in-asp-net-mvc/

Básicamente es necesario comprobar en su acción para la presencia del título correcto SEO-friendly cuando su la acción se está ejecutando, y si no la encuentra, emita una redirección de regreso al navegador a la URL correcta de SEO.

+0

+1 muy buena publicación de blog, ¡bastante útil! –

+0

Gran publicación. Puedo sugerir poner '.Trim ('-')' al final de su método 'SeoName' para evitar que cosas como" Uno (Dos) "se convierta en" uno-dos- ". –

+0

¡perfecto! especialmente para mí la migración de webform a mvc. –