加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

将ASP.NET引入Thinking Request是Ajax请求jQuery文件上传

发布时间:2020-12-16 03:47:05 所属栏目:asp.Net 来源:网络整理
导读:我正在使用源自MvcContrib的救援: public class RescueAttribute : MvcContrib.Filters.RescueAttribute{ public RescueAttribute(string view) : base(view) { IgnoreAjax = false; } public RescueAttribute(string view,params Type[] exceptionTypes) :
我正在使用源自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中使用文件上载时,Request.IsAjaxRequest()返回false.显然这是因为你无法使用json实际上传文件;这个插件生成一个隐藏的iframe来进行上传.

为了补偿,我将一个隐藏的输入附加到使用jquery.form提交的任何表单并具有文件输入:

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

这足以愚弄IsAjaxRequest.我有什么理由不这样做吗?

解决方法

这个方法很好.

JQuery和其他客户端库将X-Requested-With放在头文件中.但是,ASP Ajax助手使用隐藏的表单元素,就像您上面一样.

重要的是IsAjaxRequest()检查表单字段和标题.因此,如果它在任一地方找到X-Requested-With的XMLHttpRequest,则返回true.

很好的技术.我有一天可能会用它.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读