Контроллер расширения MVC для поддержки функции перенаправления с поддержкой ajax -

Привет, я изучаю 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, я попытался, но я недостаточно осведомлен, чтобы понять, как написать это самостоятельно. Может ли кто-нибудь из вас, экспертов, помочь мне с этим? чтобы я мог узнать это из вашего кода? Большое тебе спасибо.

6
задан tereško 24 June 2012 в 09:43
поделиться