之前一直没有接触过ajax,这次用ajaxmanager 做了一个简单的应用,特把使用流程写下:
1.首先在aspx 页面引用 global.js
2.在codeBehind的pageLoad事件里
private void Page_Load(object sender, System.EventArgs e)
{
// 在此处放置用户代码以初始化页面
AjaxManager.Register(this,"somemethod");
.........................
if(! IsPostBack)
RegisterAjaxCallbackScript();
......................
...................
}
这里有两个地方要解释下:
(1)AjaxManager.Register(this,"somemethod"); this 代表本页面的类,somemethod是此类中为客户端javascript脚本提供ajax调用的方法,此方法会有一个属性,稍后会提到.
(2) RegisterAjaxCallbackScript(); 往客户端注册脚本,这段脚本实际上应该包括两个函数,一个用来调用服务器端的 服务方法,一个是服务器端的函数返回后的回调函数.
3 [AjaxMethod(IncludeControlValuesWithCallBack=true)]
public string somemethod(int qkid)
{
.............................................................
return sometxt;
//在这个方法里return 的一些数据,就是在返回给客户端回调函数的数据,实际上是通过httpxmlresponse 返回的。
}
[ ] 里的就是ajaxMethod属性了,ajaxmanager会使用此属性来判断这个方法是否是ajax 的服务方法.
4.public void RegisterAjaxCallbackScript()
{
string scriptkey = "AjaxCallbackScriptCallRequest";
if(Page.IsClientScriptBlockRegistered(scriptkey))
return;
string js=@"<script language=""javascript"">
<!--
function CallRequest(qkid)
{
someclass.somemeth(qkid,stateMessage);
}
function stateMessage(res)
{
alert(res.value);
}
-->
</script>";
Page.RegisterClientScriptBlock(scriptkey,js);
}
第一个javascript 函数CallRequest的作用是调用服务器端的服务方法,html页面中的某个事件触发后调用它.比如按钮的onclick事件.
第二个函数stateMessage是回调函数,可以从服务器端获得一些文本.
Page.RegisterClientScriptBlock(scriptkey,js); 这个行代码的作用就是向页面里注册javascript脚本了.
实际上使用还是很简单的,很容易理解.