I was trying to do the same and this url was a big help for me. I modified it slightly so that it would work with RedirectResult as well as just Redirect.
http://craftycodeblog.com/2010/05/15/asp-net-mvc-ajax-redirect/
Just have all of your Controllers inherit from this base Controller.
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);
}
}
}
}