【翻译】了解ASP.NET MVC中的Ajax助手
原文:Understanding AJAX Helpers in ASP.NET MVC
作者:
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的,为此,需要做一点点的编码和配置。