AjaxHandler
Posted 刘小吉
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了AjaxHandler相关的知识,希望对你有一定的参考价值。
概要
AjaxHandler组件是在ASP.NET MVC Web应用程序中实现ajax功能的一系列扩展方法,该组件的最初的实现方法借鉴了网上流行的部分源代码, ,经过博主不断完善和改进后推出的比较成熟而且功能强大的ASP.NET MVC AJAX解决方案。
依赖
需要引用jquery1.7 以上版本
AjaxHandler功能
1.主要实现前后端ajax调用
2.主要实现后台action自动生成ajax扩展函数
3.支持最新的ASP.NET MVC 5.0 或更高版本
4.支持IE、Firefox、Opera、Chrome及Safari等常用浏览器
模版
述语:模版主要是只嵌入到AjaxHandler.dll中的net.js 该模版使用的嵌入资源
模版代码:
(function ($) { if (!$.net) { var defaultOptions = { contentType: "application/json; charset=utf-8", dataType: "json", type: "POST" }; $.extend({ net: {} }); $.extend($.net, { CallWebMethod: function (options, method, args, obj) { var parameters = $.extend({}, defaultOptions); var url0 = options.url + "/$CLS$" + "/" + method; if (args != null) { var jsonStr = JSON.stringify(args); $.extend(parameters, options, { url: url0, data: jsonStr }, obj); } else { $.extend(parameters, options, { url: url0 }, obj); } $.ajax(parameters); } }); } var services = new $CLS$(); $.extend($.net, { $CLS$: services }); })(jQuery); function $CLS$() { this.Options = { url: "$URL$" }; }
后台action的会根据此模版生成相应的ajax扩展函数
后端端使用
public class HomeController : WebAjax { /// <summary> /// 视图 /// </summary> /// <returns>view</returns> public ActionResult Index() { return View(); } /// <summary> /// 有参Ationc /// </summary> /// <param name="paramters">paramters</param> /// <returns>json</returns> [JsAction] public ActionResult GetParameters(Paramters paramters) { return Json(new { ok = "ok" }); } /// <summary> /// 无参Action /// </summary> /// <returns>json</returns> [JsAction] public ActionResult NoParameters() { return Json(new { ok = "ok" }); } }
1.后端需要继承WebAjax组件父类
2.需要生成的扩展函数需要标记特性JsAction
前端使用
1.引用jquery
<script src="~/Conetnt/js/jquery-1.7.2.min.js"></script>
2.引用组件模版
<script src="~/Home/Getjavascript"></script>
引用模版需要注意 模版引用顺序需要在jquery之后
Home 当前视图控制器的名称
GetJavascript 模版定义名称 (不可变)
3.js调用
对应的每一个标记了JsAction特性的Acion都会生成一个ajax的扩展函数(组件自动生成)
Home.prototype.GetParameters = function(paramters,obj){ var args = {paramters:paramters}; var options={dataType:\'json\'}; $.extend(true,options,{},this.Options); $.net.CallWebMethod(options,\'GetParameters\',args, obj); }
paramters 对应的参数 json对象
obj 对应ajax回调函数
4.客户js调用
// 有参数测试 var paramters = { "Id": 1 }; $.net.Home.GetParameters(paramters, { success: function (d) { alert("xx"); } }); // 无参数测试 $.net.Home.NoParameters({ success: function (d) { alert("ggg"); } });
如果有参数则注意参数名称需要和后台参数名称一致
obj参数则参考jquery api参数
注意如果有参数 参数只能有一个且该参数只能是一个实体对象(class)
组件下载地址:https://files.cnblogs.com/files/liuxiaoji/AjaxHandler.rar
aspx版本: http://www.cnblogs.com/liuxiaoji/p/4414404.html
以上是关于AjaxHandler的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 Indy http 或 ipworks http 模拟登录?