嗨,我正在学习 Ajax + MVC。我认为控制器自动处理 ajax 感知 Redirect() 会很好。经过一番挖掘,我从这个链接中找到了代码。下面的代码对用户完全透明,用户只需调用 Redirect(someUrlString) 而无需担心普通/ajax 调用之间的差异。使它非常整洁和凉爽。
public abstract class BaseController : System.Web.Mvc.Controller {
//turn into ajax aware redirect
protected override RedirectResult Redirect(string url) {
return new AjaxAwareRedirectResult(url);
}
}
和 ...
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); }
}
}
但是,它并不完整。挑战是:
RedirectToRouteResult RedirectToAction
( ActionResult结果)
还没有(非常方便,尤其是对于 T4MVC)。
由于我还是 MVC 的新手,所以我尝试过,但我的知识不够丰富,无法充分弄清楚如何自己编写这个。请问有哪位专家可以帮我解决这个问题吗?所以我可以从你的代码中学习它?非常感谢。