2011-07-14 8 views
5

tengo un esquema de URL como esta:Controladores MVC que burbujean en el enrutador?

website.com/keywords 

y también tengo los controladores específicos:

website.com/controller/action 

A veces las palabras clave pueden parecer un montón, como direcciones URL del controlador, o tienen algún tipo de "/ url/thingy "en ellos. Todas las URL de palabras clave se almacenarán en una base de datos y devolverán contenido estático. Lo que me gustaría poder hacer es tener primero la combinación de "palabras clave" (solo usa {*}), y si la URL no se encuentra en la base de datos, vuelva al enrutador y deje que el emparejamiento continúa.

Tengo una solución ahora que pone el enrutador universal coincidente al final, y haciendo un redireccionamiento 302 al controlador adecuado, pero que es un tiempo de ida y vuelta más largo y no es necesario si puedo hacer estallar retirarse.

+3

Puede agregar una restricción personalizada a la ruta, que puede coincidir con una lista. Incluso podría hacer una búsqueda, por ejemplo, de una base de datos en la restricción, pero como todo pasará por el motor de enrutamiento, no estoy seguro de que sea sensato desde un punto de vista de escalabilidad a menos que realice una caché eficiente de las búsquedas. En cualquier caso, es probable que obtenga mejores respuestas en SO. – FinnNk

Respuesta

2

No es que no quiera hacer el trabajo de la pierna en este caso porque me encantaría tener la respuesta también, pero sí tenía este marcador sobre el tema. custom route constraint

si baja aproximadamente hasta la mitad, puede ver cómo crear el enrutamiento de ruta personalizado; simplemente busque Listado 2 - NotEqualConstraint.cs Luego puede pasar una lista en caché de esas palabras clave o simplemente hacer que la restricción de ruta personalizada se mantenga en la lista de palabras clave.

+1

Terminamos colocando el catch-all en la parte inferior, ya que nos dimos cuenta de que solo era necesario para un hit de aproximadamente una página por visitante, ya que después de eso vamos a utilizar las rutas adecuadas. Aún así, tienes la respuesta. –

Cuestiones relacionadas