ASP.NET中使用AJAX中的方式
ASP.NET中使用【zhōng shǐ yòng】💪AJAX中的方🏊式之背【shì zhī bèi】景介绍
asp.net中使用php常用的jquery等类库🎋来实现ajax不是很容易【róng yì】😣。因为【yīn wéi】asp.net的机制【de jī zhì】已经被🏺封装了【fēng zhuāng le】,依靠内【yī kào nèi】🛋部的viewstate,如果硬🏈用js修改了【xiū gǎi le】控件的🧡值,跟他的viewstate对不上【duì bú shàng】,而这些【ér zhè xiē】🕢控件又是不可🕌修改的,将对程🧟序造成【xù zào chéng】安全性困扰,后台获【hòu tái huò】取值也🥟是一个麻烦。
另外⛽,asp.net的控件【de kòng jiàn】👝也封装【yě fēng zhuāng】了html控件【kòng jiàn】,使用js操作不是这么直接🦎。
根据Surance( http://www.fltek.com.cn/)研究发🌑现,在🎒asp.net中,有🗝3种方法【zhǒng fāng fǎ】🐋使用【shǐ yòng】⛄ajax比较简【bǐ jiào jiǎn】单。算是【suàn shì】ms的一个【de yī gè】补偿方案来的。
一个是【yī gè shì】🎈PageMethod,一个是【yī gè shì】🎈使用😩ICallbackEventHandler,还有一【hái yǒu yī】🤥个是用【gè shì yòng】ms自带的ajax控件。
分别举例说明,以下例子要实现的功能为:
在页面有一个div,一个按【yī gè àn】钮。点击按钮要调🐹用后台🔆方法获🏼取一个【qǔ yī gè】时间,然后将时间写【shí jiān xiě】入📯div。要求页【yào qiú yè】面不刷【miàn bú shuā】新💑
另外有【lìng wài yǒu】🐏个后台【gè hòu tái】的按钮🚜,点击此按钮💫,取到保存后的【cún hòu de】值
ASP.NET中使用💩AJAX中的方式【shì】1:PageMehtod
第一步🗄,建立一【jiàn lì yī】个【gè】asp.net的ajax网站🚬(或者建立普通网站后🍱修改【xiū gǎi】webconfig)
第二步,在页面建立控件:
< asp:ScriptManager ID="ScriptManager1" runat="server" EnablePageMethods="true" /> < div id="show" runat="server">aaaa < /div> < asp:HiddenField ID="HiddenField1" runat="server" /> < input type="button" value="1111" onclick="myFun()" id="Button2" /> < asp:Button ID="Button1" runat="server" Text="getValue" OnClick="Button1_Click" />
第三步【dì sān bù】🐟,js
< script> function myFun() { PageMethods.GetDate('a',myCallBack) } function myCallBack(result) { var di = document.getElementById("HiddenField1"); di.value=result; var di = document.getElementById("show"); di.innerHTML=result; } < /script>
第四步【dì sì bù】📖,后台代码
注意【zhù yì】📣,这个方法😞必须是【bì xū shì】静态方法😞,必须是【bì xū shì】写入以👽下特性。
因此这个方法不可以直接访问页面的值
[System.Web.Services.WebMethod] public static DateTime GetDate(string a) { return DateTime.Now; } protected void Button1_Click(object sender, EventArgs e) { DataTable dt = (DataTable)this.DataList1.DataSource; Response.Write(dt.Rows.Count); }
ASP.NET中使用【zhōng shǐ yòng】🎱AJAX中的方式【shì】2:使用🥐ICallbackEventHandler
第一步同上
第二步,页面实现接口
public partial class Default2 : System.Web.UI.Page, ICallbackEventHandler
第三步,建立控件
< form id="form1" runat="server"> < div id="show"> < /div> < input type="button" onclick="CallServer()" value="CallServer">< /input>
第四步【dì sì bù】🕥,
写入js
< script type="text/javascript"> function CallServer() { var product = "1"; < %= ClientScript.GetCallbackEventReference(this, "product", "ReceiveServerData",null)%>; } function ReceiveServerData(rValue) { alert(rValue); var di = document.getElementById("show"); di.innerHTML=rValue; } < /script>
第五步【dì wǔ bù】🐖,
后台代码
声明变【shēng míng biàn】量😱: public string CallBackValue;
接口方法:
public string GetCallbackResult() { return CallBackValue + ",ok"; } public void RaiseCallbackEvent(string eventArgument) { this.CallBackValue = eventArgument; }
说明【shuō míng】:RaiseCallbackEvent是实际🧥做事的【zuò shì de】方法⏭
GetCallbackResult是执行【shì zhí háng】完动作回调的🥢方法【fāng fǎ】🐾。
可以修改控件的值。
先执行【xiān zhí háng】🥔后台的【hòu tái de】回调👃方法【fāng fǎ】,后执行🤕前台js的回调👃方法【fāng fǎ】
可以使用【yòng】😡RenderControl等类【děng lèi】,来将asp.net控件输🀄出为html
可以在RaiseCallbackEvent中switchargument,看看是【kàn kàn shì】🌪什么地🐷方传来的,以便调【yǐ biàn diào】👵用不同【yòng bú tóng】的函数。
关键词:ASP.NET,AJAX
阅读本文后您有什么感想? 已有 人给出评价!
- 1
- 1
- 1
- 1
- 1
- 1