AjaxPro基础知识 and FAQ

AjaxPro基础知识 and FAQ

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的匿名类是只读的,哎真不爽啊

posted @ 2008-10-09 17:47  andy.wu  阅读(1479)  评论(5编辑  收藏  举报