vista retornar redireccionar otro otra mvc llamar ejemplos desde controlador asp.net-mvc

asp.net mvc - retornar - Devolución de una redirección 301 desde una acción de controlador



redirecttoaction ejemplos (4)

¿Eso ayuda? http://blog.eworldui.net/post/2008/04/ASPNET-MVC---Legacy-Url-Routing.aspx

Parece que solo necesitarías reemplazar la ruta virtual por una URL de tu agrado.

En ASP.net MVC, ¿cuál es la forma "correcta" de que un controlador devuelva un redireccionamiento 301 a un sitio externo?

Las diversas funciones RedirectTo-Function parecen solo devolver enlaces relativos o rutas que he mapeado manualmente, pero no hay forma de decir "Realizar un redireccionamiento 301 a http://example.com ".

Creo que podría simplemente establecer Response.StatusCode o usar Response.Redirect, pero ¿es así como debe hacerse en MVC? ¿O hay una "forma correcta" oficial de realizar redirecciones?

Actualización: Mientras tanto, escribí un ActionResult para eso: PermanentRedirectResult

Actualización 2: desde ASP.net 4.0, los redireccionamientos permanentes son parte del Framework .


Realizo redirecciones para admitir URL heredadas.

Mi controlador se parece a esto ...

Public Class ThingController Inherits System.Web.Mvc.Controller Function Details(ByVal id As String) As ActionResult Dim RedirectId As Guid Select Case key Case "legacyurlone" RedirectId = New Guid("c564c0c1-c365-4b0c-bc33-fd4eadf0551b") Case "legacyurltwo" RedirectId = New Guid("157fa15b-8d5d-4f04-87cc-434f7ae93dfa") Case Else RedirectId = Guid.Empty End Select If Not RedirectId = Guid.Empty Then Response.StatusCode = Net.HttpStatusCode.MovedPermanently Response.RedirectLocation = Url.RouteUrl("IdOnly", New With {.id = RedirectId}) Return Nothing End If Dim ThingId As Guid = New Guid(id) Dim db As New ThingEntities Dim Model As Thing = ... Return View(Model) End Function ... End Class

Ahora me pregunto si podría manejar esto más limpiamente con dos rutas y funciones de controlador.


Utilizar

Response.RedirectPermanent("http://www.google.com");

o para devolver un tipo ActionResult desde un controlador:

return RedirectPermanent("http://www.google.com");

provisto por el framework ASP.net 4.0.


Ya que está hablando de redireccionar a una URL que no sabe nada sobre el enrutamiento (ya sea una página interna (piense en ASP.NET clásico), o algún recurso externo), entonces lo único que puede hacer es establecer el código de estado. y enviar el navegador del usuario en su camino.

En esta cadena en MVC, le preocupa que el usuario obtenga su Vista, pero esa Vista no está bajo su control y puede que ni siquiera sea una Vista. Entonces, en última instancia, estás haciendo lo mejor que puedes en esta circunstancia y, que yo sepa, no están incumpliendo ninguna "regla" de MVC.

Espero que eso ayude.