Обманыванием ASP.NET в Интеллектуальный Запрос является Запрос Ajax на Загрузку Файла jQuery

Я использую спасение, полученное из MvcContrib:

public class RescueAttribute : MvcContrib.Filters.RescueAttribute
{
    public RescueAttribute(string view) : base(view)
    {
        IgnoreAjax = false;
    }

    public RescueAttribute(string view, params Type[] exceptionTypes) : base(view, exceptionTypes)
    {
        IgnoreAjax = false;
    }

    protected override ActionResult CreateActionResult(Exception exception, ExceptionContext context)
    {
        var controller = (string) context.RouteData.Values["controller"];
        var action = (string) context.RouteData.Values["action"];
        var model = new HandleErrorInfo(exception, controller, action);

        if (context.Controller.ControllerContext.HttpContext.Request.IsAjaxRequest())
        {
            return new JsonResult(model);
        }
        return base.CreateActionResult(exception, context);
    }
}

Теперь, когда использование файла загружает в jQuery.form, Запросе. IsAjaxRequest () возвращает false. По-видимому, это вызвано тем, что Вы не можете на самом деле загрузить файл с помощью json; этот плагин генерирует скрытый iframe, чтобы сделать загрузку.

Для компенсации я добавляю скрытый вход к любой форме, которая отправлена с jquery.form и имеет исходные данные файла:

$(this).append('<input type="hidden" name="X-Requested-With" value="XMLHttpRequest" />');

Это достаточно хорошо для одурачивания IsAjaxRequest. Есть ли какая-либо причина, почему я не должен делать этого?

6
задан João Bragança 4 August 2010 в 17:24
поделиться