原文:Understanding AJAX Helpers in ASP.NET MVC


作者:

www.dotnet-tricks.com and www.dotnetinterviewtricks.com blogs. He is author of book ASP.NET MVC Interview Questions and Answers.


More...



AJAX助手主要用于创建已启用AJAX的元素来执行异步请求,如启用了Ajax的表单或链接。AJAX助手是AJAXHelper类的扩展方法,包含在System.Web.Mvc.Ajax命名空间中。



AJAX HTML

元素示例

基于action/controller的启用了AJAX的链接

@Ajax.ActionLink("Load Products", "GetProducts", new AjaxOptions {UpdateTargetId = "Products-container", HttpMethod = "GET" })

输出:<a data-ajax="true" data-ajax-method="GET" data-ajax-mode="replace" data-ajax-update="#Products-container" href="/Home/GetProducts">Load Products</a>


非介入式AJAX(Unobtrusive AJAX)

ASP.NET支持基于JQuery非介入式的AJAX。非介入式意味着可以使用辅助方法来定义Ajax功能,而不是通过在视图内添加代码块来实现。

AJAX助手的各种配置选项

在AjaxOptions类定义了用来为AJAX请求生命周期内的不同阶段指定回调函数的属性。通过AjaxOptions类为AJAX助手提供了以下属性:

属性

描述

Url

指定要请求的服务器的地址

Confirm

指定将要显示给最终用户的确认对话框内消息。当用户在确认对话框内单击OK按钮,Ajax将执行调用。

OnBegin

指定在发送Ajax请求前要调用的JavaScript函数名称。

ONComplete

指定在Ajax请求完成后要调用的JavaScript函数名称。

OnSuccess

指定在Ajax请求成功后要调用的JavaScript函数名称。

OnFailure

指定在Ajax请求失败后要调用的JavaScript函数名称。

LoadingElementId

用来指定在Ajax请求期间用来显示进度信息或动画的容器的id

LoadingElementDuration

指定进度信息或动画的持续时间,单位为毫秒

UpdateTargetId

指定用来填充action方法返回的HTML的目标容器的id

InsertionMode

指定目标容器的填充防守。可选择值包括InsertAfter、 InsertBefore 和Replace(默认值)


什么是跨域Ajax?

默认情况下,Web浏览器允许AJAX调用Web应用程序源站点的数据,即托管服务器的站点。这样做的目的是为了防止各类安全问题,如跨站脚本(XSS)攻击。不过,有时候还是需要与外部托管的API进行交互,如Twitter或Google。因此,要与这些外部的API或服务器进行交互的Web应用程序必须支持JSONP请求或跨资源共享(CORS)。在默认情况下,ASP.NET MVC是不支持JSONP或CORD的,为此,需要做一点点的编码和配置。