asp.net mvc de enrutamiento con el parámetro de partida opcional
-
30-09-2019 - |
Pregunta
estoy empezando un puerto de un ASP.NET Web Forms existentes CMS para ASP.NET MVC y quieren obtener el derecho de enrutamiento desde el principio.
Nota:. No es importante tener exactamente la misma estructura de la URL
esta respuesta está cerca de lo que estoy buscando pero me gustaría alguna entrada adicional si alguien lo tiene.
El trucción URL actual es como:
? Content = Noticias / CurrentNews / This_is_a_news_article
? Contenido = corporativa / about_us / Visión general
, etc, etc
Me gustaría añadir un parámetro de idioma opcional y mantener una estructura similar en MVC. Así que algo como:
Noticias / CurrentNews / Este-is-a-noticias-artículo
es / Noticias / CurrentNews / Este-is-a-noticias-artículoeditar / Noticias / CurrentNews / Este-is-a-noticias-artículo
editar / es / noticias / CurrentNews / Este-is-a-noticias-artículo
o soy mejor con la inversa?
Noticias / CurrentNews / Este-is-a-noticias-artículo / editar
es / Noticias / CurrentNews / Este-is-a-noticias-artículo / editar
Creo que de esta manera (con la acción sobre un extremo) requries una ruta para cada escenario de otras preguntas que he leído.
El otro punto es que las URL existentes se hacen así para SEO y generación de miga de pan. es decir, los espectáculos de URL la ruta de navegación actual.
Yo sólo podía mostrar la página actual en la URL y construir las migas de pan a partir de la base de datos separadamente.
Al igual que:
es / Este-is-a-noticias-artículo
con miga
Inicio> Noticias> Noticias de corriente> Este es un artículo de noticias
pensamientos y soluciones en general? ¿Debo comenzar con una clase personalizada de enrutamiento para una máxima flexibilidad?
Solución
Hay que asegurarse de que no habrá superposición accidental de ciertas reglas de enrutamiento. Por ejemplo digamos que usted está poniendo la lengua como la primera etiqueta, asegúrese de que no habrá noticias-categorías que tienen 'es' para un nombre. Sé que esto es un ejemplo tonto, pero creo que se obtiene la imagen. Asegúrese de poner el enrutamiento de menor precisión gobierna pasado.
En lo personal me gustaría estructurar de esta manera:
[language]/[category]/[subcategory]/[itemtitle]/[itemid]
¿Por qué la [itemId] se puede pedir? Si usted tiene un sitio web grande, puede ocurrir que usted tiene 2 artículos de noticias con el mismo nombre exacto. Su código puede "acaba de pasar a ser" escrito para mostrar sólo el primer elemento Novedades regresó, pero del mismo modo que no puede ser. Un ID es siempre único y en términos de SEO, añadiendo el ID, realmente no importa (en mi experiencia por lo menos).
Se puede añadir una ruta donde [idioma] se queda fuera y se proporciona un defecto en su lugar.
Además, Scott Guthrie ha escrito un buen entrada de blog en este hace un tiempo que es definitivamente vale la pena leer, creo que sigue siendo válida para MVC 3. Sólo le puede dar algunas ideas!