AjaxPro怎么传对象参数
2012-11-10 18:28 苏飞 阅读(2343) 评论(4) 编辑 收藏 举报C#论坛同步地址: http://www.cckan.net/thread-1065-1-1.html
AjaxPro向C#方法传对象,也可以说是AjaxPro将对象传向C#方法。意思就是如果你的C#方法的参数是对象的话应该怎么传
比如我的方法如下:
[AjaxMethod()] /// <summary> /// 查询用户信息 /// </summary> /// <param name="model">用户对象</param> /// <param name="_currentpage">当前页</param> /// <param name="_pagesite">每页行数</param> /// <returns></returns> public DataSet sp_select_users(Sys_Users model, int _currentpage, int _pagesite) { //这里是方法实现 } |
那么在前台应该怎么传呢,其实很简单啊,大家看一下我的JS方法就知道了
$( function () { $( "#btnSelect" ).click( function () { selectuser(); }); }); function selectuser() { //生成参数对象Obj var Obj = createParameter(); //直接传Obj对象过去就行了 var result = UserSelect.sp_select_users(Obj, 1, 10); //下面是取到数据之后大家可以不关注 if (result.value) { var ds = result.value; var table = ds.Tables[0]; var pagecount = ds.Tables[1].Rows[0].pagecount; var sb = "<table width=\"90%\" align=\"center\" border=\"0\" cellspacing=\"0\" cellpadding=\"0\">" sb = sb + "<tr>" for ( var i = 0; i < table.Columns.length; i++) { sb = sb + "<td>" + table.Columns.Name + "</td>" ; } sb = sb + "</tr>" //Rows for ( var i = 0; i < table.Rows.length; i++) { var dr = table.Rows; sb = sb + "<tr onmouseover=\"this.style.backgroundColor='#F3F7F8'\" " + "onmouseout=\"this.style.backgroundColor=''\">" for ( var j = 0; j < table.Columns.length; j++) { sb = sb + "<td>" + eval( 'dr.' + table.Columns[j].Name) + "</td>" ; } sb = sb + "</tr>" ; } sb = sb + ' </table>' ; $( "#sysusertable" ).html(sb) } } |
当然我必须得提供一下我的createParameter方法,也就是这个方法来完成的Obj对象
/// <reference path="jquery-1.4.1-vsdoc.js" /> /** *作者:苏飞 */ function createParameter() { var objStr = "var Obj = new Object();" ; //转字符和整数类型 $( "[ajax='true']" ).each( function () { var value = $( this ).attr( "value" ); if (value == "" ) { value = "-1" ; } objStr = objStr + "Obj." + $( this ).attr( "id" ) + " = \"" + value + "\";" ; }); //转日期类型 $( "[ajax='true_d']" ).each( function () { var value = $( this ).attr( "value" ); if (value == "" ) { value = "2000-01-01" ; } objStr = objStr + "Obj." + $( this ).attr( "id" ) + " = " + getdate(value) + ";" ; }); //转Float类型 $( "[ajax='true_f']" ).each( function () { var value = $( this ).attr( "value" ); if (value == "" ) { value = "-1.00" ; } objStr = objStr + "Obj." + $( this ).attr( "id" ) + " = parseFloat('" + value + ".00');" ; }); eval(objStr); return Obj; //到这里已经生成了Obj对象 } function getdate(strdate) { return 'new Date(' + strdate.replace(/\d+(?=-[^-]+$)/, function (a) { return parseInt(a, 10) - 1; }).match(/\d+/g) + ')' ; } |
好了,大家如果想使用的话就在你的查询条件上增加一个条件就行了
比如
ajax='true' 代表iint和String
ajax='true_d' 时间类型
ajax='true_f' 浮点类型,和decimal类型
例子

<form id="form1" runat="server"> <div> <table cellspacing="0" cellpadding="0" width="100%" border="0"> <tr> <td height="25" width="30%" align="right"> 分组ID : </td> <td height="25" width="*" align="left"> <asp:TextBox ID="userclass_id" ajax='true' runat="server" Width="200px"></asp:TextBox> </td> </tr> <tr> <td height="25" width="30%" align="right"> 角色ID : </td> <td height="25" width="*" align="left"> <asp:TextBox ID="role_id" ajax='true' runat="server" Width="200px"></asp:TextBox> </td> </tr> <tr> <td height="25" width="30%" align="right"> 代理ID sys_agent : </td> <td height="25" width="*" align="left"> <asp:TextBox ID="agent_id" ajax='true' runat="server" Width="200px"></asp:TextBox> </td> </tr> <tr> <td height="25" width="30%" align="right"> 用户名 : </td> <td height="25" width="*" align="left"> <asp:TextBox ID="username" ajax='true' runat="server" Width="200px"></asp:TextBox> </td> </tr> <tr> <td height="25" width="30%" align="right"> 电子邮件 : </td> <td height="25" width="*" align="left"> <asp:TextBox ID="email" ajax='true' runat="server" Width="200px"></asp:TextBox> </td> </tr> <tr> <td height="25" width="30%" align="right"> 余额 : </td> <td height="25" width="*" align="left"> <asp:TextBox ID="balance" ajax='true_f' runat="server" Width="200px"></asp:TextBox> </td> </tr> <tr> <td height="25" width="30%" align="right"> 开始时间 : </td> <td height="25" width="*" align="left"> <asp:TextBox ID="st" ajax='true_d' runat="server" Width="198px"></asp:TextBox> </td> </tr> <tr> <td height="25" width="30%" align="right"> 结束时间 : </td> <td height="25" width="*" align="left"> <asp:TextBox ID="et" ajax='true_d' runat="server" Width="200px"></asp:TextBox> </td> </tr> </table> </div> <input id="btnSelect" type="button" value="button" /> <br/> <br/> <asp:Table ID="sysusertable" runat="server"> </asp:Table> </form>
下面大家看看效果吧
总结一下:
1.在参数的时候可以和后台对象的个数不一样
2.参数的数据类型必须一样。
3.只有整数和String类型的不需要转化,其它的都必须强制转化类型才行。
本人的博客不再维护从2013年就不再维护了
需要我帮助的朋友请到我的个人论坛 http://www.sufeinet.com 进行讨论,感谢大家对我的支持!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· 展开说说关于C#中ORM框架的用法!
· SQL Server 2025 AI相关能力初探
· Pantheons:用 TypeScript 打造主流大模型对话的一站式集成库