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