AJAX在ASP.NET中使用注意点

经过折腾,总结总结ajax的使用场景和方法

ASP NET WebForm
在webfrom中使用ajax就很明朗,要么就submit提交表单,要么就ajax提交表单。

  • 注意点:假设在登录场景,ajax登录成功后,需要重定向Redirect,但是Redirect对于ajax引擎来说是无法识别的。
    所以所有的ajax重定向都需要在ajax回调函数中发起请求
  • 注意点:在进行ajax请求时,注意将button的type修改下,不要写成submit

ASP NET MVC
ASP NET Core MVC
这两种放在一起说,就是因为这两者差不多,都可以使用XML和原jquery

区别:
在MVC中可以实现非侵入式(一种代码书写优雅的说法)Ajax使用方法,即Unobtrusive Ajax;
ASP NET MVCASP NET Core MVC 使用Unobtrusive Ajax有区别:

  • ASP NET MVC可以使用AjaxHelper,AjaxHelper提供了很多函数:ActionLink,RouteLink,BeginForm,BeginRouteForm。使用AjaxHelper后,原来的表单控件上会多了一些属性:data-ajax,data-ajax-success等等,Unobtrusive Ajax会识别这些属性做相关处理

  • ASP NET Core MVC 中没有AjaxHelper,需要直接在form中添加data-ajax="true"等相关的属性。

  • 使用Unobtrusive Ajax时,在提交表单时,可以使用submit,Unobtrusive Ajax会对submit事件进行处理:

$(document).on("submit", "form[data-ajax=true]", function (evt) {
        var clickInfo = $(this).data(data_click) || [],
            clickTarget = $(this).data(data_target),
            isCancel = clickTarget && (clickTarget.hasClass("cancel") || clickTarget.attr('formnovalidate') !== undefined);
        evt.preventDefault();
        if (!isCancel && !validate(this)) {
            return;
        }
        asyncRequest(this, {
            url: this.action,
            type: this.method || "GET",
            data: clickInfo.concat($(this).serializeArray())
        });
    });
  • 有个场景:
    MVC中使用表单;表单中元素对应着强类型中的属性;需要使用submitajax提交表单;在请求服务器之前需要进行预处理;
    那就要用到Unobtrusive Ajax中的sumit提交和onsubmit()去请求前的预处理;
    但是sumit ajax提交和onsubmit()之前会形成异步;无法再预处理之后再发送ajax异步请求;处理办法就是修改上面那个代码块:
$(document).on("submit", "form[data-ajax=true]", function (evt) {
        var clickInfo = $(this).data(data_click) || [],
            clickTarget = $(this).data(data_target),
            isCancel = clickTarget && (clickTarget.hasClass("cancel") || clickTarget.attr('formnovalidate') !== undefined);
        evt.preventDefault();
        if (!isCancel && !validate(this)) {
            return;
        }
//提交前的预处理......
        asyncRequest(this, {
            url: this.action,
            type: this.method || "GET",
            data: clickInfo.concat($(this).serializeArray())
        });
    });
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值