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類型的不需要轉化,其它的都必須強制轉化類型才行。