Я пытался сделать то же самое, и этот URL мне очень помог. Я немного изменил его, чтобы он работал как с RedirectResult, так и с Redirect.
http://craftycodeblog.com/2010/05/15/asp-net-mvc-ajax-redirect/
Просто все ваши контроллеры наследуются от этого базового контроллера.
public abstract class MyBaseController : Controller {
protected override RedirectToRouteResult RedirectToRoute(string routeName, System.Web.Routing.RouteValueDictionary routeValues) {
return new AjaxAwareRedirectResult(Url, routeName, routeValues);
}
public class AjaxAwareRedirectResult : RedirectToRouteResult {
public AjaxAwareRedirectResult(UrlHelper url, string routeName, System.Web.Routing.RouteValueDictionary routeValues)
: base(routeName, routeValues) {
this.url = url;
}
private readonly UrlHelper url;
public override void ExecuteResult(ControllerContext context) {
if (context.RequestContext.HttpContext.Request.IsAjaxRequest()) {
string destinationUrl = url.RouteUrl(base.RouteName, base.RouteValues);
JavaScriptResult result = new JavaScriptResult()
{
Script = "window.location='" + destinationUrl + "';"
};
result.ExecuteResult(context);
} else {
base.ExecuteResult(context);
}
}
}
}