asp.net-mvc - parameter - asp-route-id
Convierta la URL de formularios web de ASP.NET a la ruta MVC (2)
Estoy reemplazando una vieja aplicación webforms de ASP.NET con una nueva aplicación MVC. Sin embargo, tengo un problema con los usuarios que tienen enlaces antiguos a una página en particular que me gustaría traducir automáticamente a la ruta MVC correcta.
Sitio antiguo: http://mysite.com/ticketsdetail.aspx?id=12345
Nuevo sitio: http://mysite.com/tickets/details/12345
¿Hay alguna manera en el enrutamiento MVC de capturar la antigua url y traducirla a la nueva?
EDITAR:
Ok, la entrada web.config para hacer esto usando la reescritura de URL de IIS7 es:
<rewrite>
<rules>
<rule name="Ticket page redirect" stopProcessing="true">
<match url="ticketsdetail.aspx$" />
<conditions>
<add input="{QUERY_STRING}" pattern="id=(/d*)$" />
</conditions>
<action type="Redirect" url="Calls/Tickets/{C:1}" appendQueryString="false" redirectType="Temporary" />
</rule>
</rules>
</rewrite>
No lo haga en código es mi sugerencia, a menos que sea absolutamente necesario. Scott Hanselman tiene un buen artículo sobre cómo hacer lo que necesita en el web.conf usando IIS Url Rewrite. Artículo aquí
Esta sería su regla que iría en su web.config también:
<rule name="RewriteUserFriendlyURL1" stopProcessing="true">
<match url="^ticket/details/([^/]+)/?$" />
<conditions>
<add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
<add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
</conditions>
<action type="Rewrite" url="ticketdetails.aspx?id={R:1}" />
</rule>
Si usa IIS7, la herramienta de reescritura de URL es bastante hábil; http://learn.iis.net/page.aspx/460/using-url-rewrite-module/
Este es un buen artículo; http://learn.iis.net/page.aspx/496/iis-url-rewriting-and-aspnet-routing/
¿Qué opción deberías usar?
¿Qué significa toda esta información si necesita elegir una tecnología para habilitar URL limpias para sus aplicaciones web? En esta sección, explicamos cómo hacer esta elección.
Si su aplicación web está construida utilizando cualquier cosa que no sea ASP.NET, use el módulo Reescribir URL de IIS. De lo contrario, las reglas son:
- Si está desarrollando una nueva aplicación web ASP.NET que utiliza tecnologías ASP.NET MVC o ASP.NET de datos dinámicos, utilice el enrutamiento ASP.NET. Su aplicación se beneficiará del soporte nativo para URL limpias, incluida la generación de URL limpias para los enlaces en sus páginas web. Tenga en cuenta que el enrutamiento ASP.NET aún no es compatible con las aplicaciones estándar de formularios web, aunque existen planes para respaldarlo en el futuro.
- Si ya tiene una aplicación web ASP.NET heredada y no desea cambiarla, use el módulo Reescribir URL. El módulo de reescritura de URL le permite traducir las URL de los motores de búsqueda en un formato que su aplicación utiliza actualmente. Además, le permite crear reglas de redireccionamiento que pueden usarse para redirigir a los rastreadores de los motores de búsqueda para limpiar las URL.
Sin embargo, es lógico para mí conseguir que el reescritor de URL resuelva este tipo de cosas en el nivel iis, especialmente porque necesitarás usar una expresión regular para separar la cadena de consulta para formar la nueva URL. Algo así como la URL. Rewriter hace increíblemente bien.