ASP.NET AJAX 1 Beta的PageMethods限制

今天安装了ASP.NET AJAX 1.0 Beta(见微软发布ASP.NET AJAX 1.0 Beta版),并把一个用到Atlas CTP的项目进行了修改与迁移。迁移并不复杂,只要照着Migration Guide做就行了。

当然也发现了一些问题。最令人意外的是PageMethods不能正常使用了,这应该是Beta的一个BUG。要正常使用PageMethods,请:

  • 给要使用的方法加上 Microsoft.Web.Script.Services.ScriptMethod 修饰;
  • 该方法必须为public和static的;
  • 该方法不能直接使用当前page的controls;
  • 该方法不能放在codebehind文件中,而是必须放在aspx文件中(真变态,这应该是BUG的源头,前3个都是PageMethods的正常要求)。

给个例子:

<script runat="server">
   [System.Web.Services.WebMethod]
   [Microsoft.Web.Script.Services.ScriptMethod]
   public static string HelloWorld()
   {
      return "hello world";
   }
</script>