Hola, estoy aprendiendo Ajax + MVC. Pensé que sería bueno para el controlador manejar automáticamente un Redirect() consciente de javascript. Después de algunas excavaciones, encontré el código de este link. El código a continuación es totalmente transparente para el usuario, un usuario puede simplemente llamar a Redirect (someUrlString) sin tener que preocuparse por la diferencia entre las llamadas normales/ajax. Lo hace muy limpio y fresco.Controlador de extensión MVC para tener funcionalidad de redireccionamiento ajax
public abstract class BaseController : System.Web.Mvc.Controller {
//turn into ajax aware redirect
protected override RedirectResult Redirect(string url) {
return new AjaxAwareRedirectResult(url);
}
}
y ...
public class AjaxAwareRedirectResult : RedirectResult {
public AjaxAwareRedirectResult(string url) : base(url) { }
public override void ExecuteResult(ControllerContext context) {
if (context.RequestContext.HttpContext.Request.IsAjaxRequest()) {
string desturl = UrlHelper.GenerateContentUrl(Url, context.HttpContext);
JavaScriptResult result = new JavaScriptResult() {
Script = "window.location='" + desturl + "';" };
result.ExecuteResult(context);
}
else { base.ExecuteResult(context); }
}
}
Sin embargo, no es completa. Reto es:
RedirectToRouteResultRedirectToAction
(ActionResult resultado)
no está allí todavía (muy útil sobre todo para T4MVC).
Como soy nuevo en MVC, lo intenté, pero no estoy lo suficientemente enterado como para descubrir cómo escribir esto yo mismo. ¿Podrían alguno de ustedes expertos ayudarme con esto? entonces puedo aprenderlo de tu código? Muchas gracias.