6
我使用從MvcContrib衍生救援:使用jQuery.form,Request.IsAjaxRequest文件上傳時誘騙ASP.NET以爲請求AJAX請求的jQuery文件上傳
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);
}
}
Now()傳假。顯然這是因爲你實際上無法使用json上傳文件;這個插件會生成一個隱藏的iframe來進行上傳。
爲了彌補我追加一個隱藏的輸入到與jquery.form提交併有文件輸入任何形式:
$(this).append('<input type="hidden" name="X-Requested-With" value="XMLHttpRequest" />');
這是不夠好糊弄IsAjaxRequest。是否有任何理由,我不應該做到這一點?
+1爲了滿足骯髒的黑客行爲 – BritishDeveloper 2010-08-04 21:19:51
所以基本上這是安全的。 – 2010-08-06 17:25:40