AjaxPro基础知识 and FAQ
AjaxPro基础知识 and FAQ
注意:必须使用typeof,如果使用了this.GetType()则没有效果。因为没有相关文档,我也没费那心思,所以不是很清楚原因。(这个问题耗费了我两天的时间才顿悟,粗心大意加自由散漫害死人啊, 以后一定照标准做)
tags: ajaxpro sample
主要是一些用AjaxPro的经验,希望能给需要的人有一些帮助。
官方网站:http://www.codeplex.com/AjaxPro(New)
演练(walkthrough)
是从实际的项目中抽取出来的,目的是备忘,以后看时有条理。
我只用到了ajaxpro.2.dll
1. 在web.config中的system.web/httpHandlers小节:<add verb="POST,GET" path="ajaxpro/*.ashx" type="AjaxPro.AjaxHandlerFactory, AjaxPro.2"/>
2. 在Page_Load事件中注册页面类型:
protected void Page_Load(object sender, EventArgs e)
{
AjaxPro.Utility.RegisterTypeForAjax(typeof(WebAdmin_RefreshCompleteScore));
}
注意:必须使用typeof,如果使用了this.GetType()则没有效果。因为没有相关文档,我也没费那心思,所以不是很清楚原因。(这个问题耗费了我两天的时间才顿悟,粗心大意加自由散漫害死人啊, 以后一定照标准做)
3. 将方法标记为[AjaxPro.AjaxMethod]:
[AjaxPro.AjaxMethod]
public string Hello()
{
return "Hello, now is " + DateTime.Now;
}
4. 在页面中写js脚本
<script type="text/javascript" language="javascript">
function Hello()
{
AjaxPro.timeoutPeriod = 150000 // 设置超时的时间, 这里只是演示一下,大多数情况不用写
var info = "请稍候,正在处理数据..."
$('#cc_lblMessage').html(info);
WebAdmin_RefreshCompleteScore.Hello(CallBack);
}
function CallBack(rc)
{
alert(rc.value);
}
</script>
Q: 如何同步调用
var result = ClassName.func();
就是同步调用
Q: 服务器端的方法能返回对象吗
可以的,这个真是方便,估计ajaxpro直接处理成json了,哈哈,在c# 3中使用匿名类更爽。
[AjaxPro.AjaxMethod]
public object Delete(int id)
{
......
if (userCnt > 0)
{
return new { IsSuccessful = false, Message = "该用户组存在用户,不能删除。" };
}
else
{
......
return new { IsSuccessful = true, Message = "该用户组已删除。" };
}
}
ps: c# 3的匿名类是只读的,哎真不爽啊