当前位置: 首页 > 图文教程 > 网络编程 > ASP.NET > .Net应用:ASP.NET中使用AJAX中的方式

ASP.NET
使用函数传递参数来执行相应的数据库操作
如何实现在窗体和窗体之间进行传递数据
ASP.NET中文显示之两种解决方法
ASP.NET、JSP及PHP之间的抉择
ASP.NET 2.0发送电子邮件中存在的问题
谈谈HtmlControl与WebControl的区别与用途
从ASP.NET 1.1升级到ASP.NET 2.0要考虑的Cookie问题
通过系统配置来提高ASP.NET应用程序的稳定性
妙用ASP2.0中的URL映射改变网址
AJAX实现web页面中级联菜单的设计
ASP.NET跨页面传值技巧总结
再议ASP.NET DataGrid控件中的“添加新行”功能
Geometry 对象浅析
重构CollapsibleSplitter
如何利用.NET Framework使用RSS feed
ASP.NET获取IP与MAC地址的方法
在ASP.NET 2.0中使用样式、主题和皮肤
ASP.NET中为GridView添加删除提示框
ASP.NET 2.0,无刷新页面新境界
看看一个.net版对话框控件

.Net应用:ASP.NET中使用AJAX中的方式


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-09-23   浏览: 41 ::
收藏到网摘: n/a

asp.net中使用php常用的jquery等类库来实现ajax不是很容易。因为asp.net的机制已经被封装了,依靠内部的viewstate,如果硬用js修改了控件的值,跟他的viewstate对不上,而这些控件又是不可修改的,将对程序造成安全性困扰,后台获取值也是一个麻烦。

另外,asp.net的控件也封装了html控件,使用js操作不是这么直接。

根据Surance( http://www.fltek.com.cn/)研究发现,在asp.net中,有3种方法使用ajax比较简单。算是ms的一个补偿方案来的。

一个是PageMethod,一个是使用ICallbackEventHandler,还有一个是用ms自带的ajax控件。

分别举例说明,以下例子要实现的功能为:

在页面有一个div,一个按钮。点击按钮要调用后台方法获取一个时间,然后将时间写入div。要求页面不刷新

另外有个后台的按钮,点击此按钮,取到保存后的值

ASP.NET中使用AJAX中的方式1:PageMehtod

第一步,建立一个asp.net的ajax网站(或者建立普通网站后修改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" />

第三步,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>

第四步,后台代码

注意,这个方法必须是静态方法,必须是写入以下特性。

因此这个方法不可以直接访问页面的值

[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中使用AJAX中的方式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>

第四步,

写入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>

第五步,


后台代码


声明变量: public string CallBackValue;


接口方法:

 

public string GetCallbackResult() {

return CallBackValue + ",ok";

}

public void RaiseCallbackEvent(string eventArgument) {

this.CallBackValue = eventArgument;

}

说明:RaiseCallbackEvent是实际做事的方法


GetCallbackResult是执行完动作回调的方法。


可以修改控件的值。


先执行后台的回调方法,后执行前台js的回调方法


可以使用RenderControl等类,来将asp.net控件输出为html


可以在RaiseCallbackEvent中switchargument,看看是什么地方传来的,以便调用不同的函数。