这(zhè)是Ajax.dll无刷新(xīn)组(zǔ)件,无刷新组件
1. 有直(zhí)接用框架的:Ajaxpro和Ajax,这两(liǎng)种我(wǒ)用过了,觉得不错
2. 还有(yǒu)一种就(jiù)是用微软专门(mén)为Ajax开发的控件包,叫作(zuò)ASP.NET AJAX Control Toolkit,这个我(wǒ)没太研究,网上有相关资料(liào),想知道的可(kě)以自己去查,里面有很多现成的控件可以实现AJAX。
以上三(sān)种是我收集(jí)到的一(yī)些AJAX的实现方(fāng)法,我(wǒ)要讲(jiǎng)的是第一种方法的应用,因为(wéi)第一种能叫你(nǐ)明白AJAX的运行原理,比较适合(hé)初学者(zhě)。
我主要讲Ajaxpro,这是个组件,必须去网(wǎng)上下(xià)载,其实(shí)就是一个Ajaxpro.dll文件,注(zhù)意,网上有(yǒu)两种一(yī)种叫(jiào)Ajax.dll一种叫 Ajaxpro.dll,这两种(zhǒng)功能上是一样(yàng)的,就(jiù)是添加引用的语句(jù)有些不同,下(xià)面我会分(fèn)别说的。其实用AJAX都要(yào)下相关组(zǔ)件的(de),开(kāi)始我也不习惯下什么(me)插件,可(kě)后来还是下了,不下不行呀。我下到的(de)是Ajax.dll,所以讲时以Ajax.dll为准。
应用篇,这以下(xià)的东西会借鉴(jiàn)网上其(qí)他人的文章,在这里声明一(yī)下
1.先把Ajax.dll添加引用(yòng)到项目(mù)中,别告诉我不会(huì),如果连这个也不会就(jiù)太那个了,和添加(jiā)其他DLL一样(yàng),在项目上右击,菜单(dān)上有个[添加(jiā)引(yǐn)用],然后一步(bù)一步把那个(gè).DLL文件添加进来,之后你会在项目的(de)引用中看到那个Ajax.dll就是添加成(chéng)功了(le)
2.修改Web.config。在 <system.web> 元素中添加以下代码。这里的(de)Ajax.dll和Ajaxpro.dll引用方法(fǎ)是不一(yī)样的(de),一定要注意
<configuration>
<system.web>
<httpHandlers>
<!-- Ajax.dll的配置文件写(xiě)法为,我下(xià)载(zǎi)到的是这个 -->
<add verb="POST,GET" path="ajax/*.ashx" type="Ajax.PageHandlerFactory, Ajax" />
<!-- AjaxPro.dll的配(pèi)置(zhì)文件写(xiě)法为,根据你下(xià)载(zǎi)到的DLL文件选(xuǎn)择不同的配置语句-->
<add verb="*" path="ajaxpro/*.ashx" type="AjaxPro.AjaxHandlerFactory, AjaxPro"/>
</httpHandlers>
</system.web>
</configuration>
如果是IIS7,则需要(yào)在<system.webServer></system.webServer>里加上<add name="ajax" verb="POST,GET" path="ajax/*.ashx" type="Ajax.PageHandlerFactory, Ajax" />
3对AjaxPro用到的页(yè)Page_Load事件中(zhōng)进(jìn)行运行时注册。如:
protected void Page_Load(object sender, EventArgs e)
{
Ajax.Utility.RegisterTypeForAjax(typeof(_Default));//是Ajax.dll的
AjaxPro.Utility.RegisterTypeForAjax(typeof(_Default));//Ajaxpro.dll的
}
//这的_Default是指页面(miàn)类的类名,就(jiù)是(shì)这个页面(miàn)的名字。如是(shì)放在(zài)命名空间,则需要写上完整(zhěng)的命名空间(如:namespaces._Default)
4. 创建服务(wù)器端方法
[Ajax.AjaxMethod]//这句一定要有,如果(guǒ)你是Ajaxpro.dll就(jiù)写成(chéng)[AjaxPro.AjaxMethod]
public string getValue(int a,int b)
{
//该方(fāng)法我们(men)将实现(xiàn)从客户端传入两个数,在服(fú)务器端相加计算后返回(huí)到客户端(duān)。这里可(kě)以写在(zài)原(yuán)来的页后台(tái)中也(yě)可以(yǐ)单独写一(yī)个类。
return Convert.ToString(a+b);//这里返回的就(jiù)是前(qián)台得到(dào)的值,反正参数已经进CS文件了,想怎么操作就(jiù)怎么操作,包括读(dú)库都可以。
5. 客户端调(diào)用。
<%@ Page language="c#" Codebehind="WebPage1.aspx.cs" AutoEventWireup="false" Inherits="Web.WebPage1" %>
<script language="javascript">
function getValue()
{
//这里(lǐ)如(rú)果是(shì)AjaxPor.dll就加Web._Default.getValue,如果是Ajax.dll就(jiù)不(bú)用加(jiā)命名空间如下
_Default.getValue(1,2,getGroups_callback);//该(gāi)处即调用服务器端的(de)_Default.getValue方法。
//_Default就是写getValue的那个类,如果(guǒ)写在本页CS里就是WebPage1.getValue,1和2是参数。
//这在里边getGroups_callback指定的是个回调函数,以接受服(fú)务器端处理完后返(fǎn)回客户端结果。
}
//这个方法(fǎ)用户接(jiē)受并处理(lǐ)服务器端返回(huí)的结果。
function getGroups_callback(response)
{
var dt=response.value;//这个值就是最终传回来的值,想怎么用就怎么用,反正回前(qián)台了。
document.getElementById("Div_1").innerHTML=dt;
}
</script>
<body>
<div id="Div_1"> </div>
<button </botton>
</body>
