Привет, я изучаю Ajax + MVC. Я подумал, что было бы неплохо, если бы Контроллер автоматически обрабатывал перенаправление ()с учетом ajax -. Немного покопавшись, я нашел код по этой ссылке . Код ниже полностью прозрачен для пользователя,пользователь может просто вызвать 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); }
}
}
Однако оно не является полным. Вызов:
РедиректтороутересултRedirectToAction
(Результат действия результат)
еще нет (Очень удобно, особенно для T4MVC ).
Поскольку я все еще новичок в MVC, я попытался, но я недостаточно осведомлен, чтобы понять, как написать это самостоятельно. Может ли кто-нибудь из вас, экспертов, помочь мне с этим? чтобы я мог узнать это из вашего кода? Большое тебе спасибо.