asp.net Ajax 学习总结(3)

来源:互联网 发布:福州极客网络 编辑:程序博客网 时间:2024/05/01 16:04
  • 想要让asp.net ajax 异步通信曾为服务器复杂类型自动生成相应的客户端javascript类型,并在调用过程中传递并接收该负责类型,我们需要:
  •  为web service类或web service 中需要暴露给客户端的方法添加[ScriptService]属性;
  • 为web Service类中需要暴露给客户端的方法添加[WebMethod]属性;
  • 为Web Service类添加若干个[GenerateScriptType(typeof([TypeName]))]属性,[TypeName]表示该复杂类型或其嵌套的复杂类型的名称;
  • 该复杂类型必须要有一个无参数的构造函数;
  • 该复杂类型的所有共有属性应该提供获取方法和设置方法(即需要可读可写),除了如下几种情况
    • 该属性应用了[System.Web.Script.Serialization.ScriptIgnore]属性,即让ASP.NET AJAX异步通信层在省城客户端javaScript类型时忽略该属性,那么其属性可以没有设置方法或获取方法;
    • 该服务器端队形只是用来单项输出JSON字符串,那么其属性可以没有设置方法;
    • 在客户端传入的时候不会设置该属性的值,那么该属性可以没有设置方法。在页面的ScriptManager控件中添加对该WebService的引用。

然后,ASP.NET AJAX异步通信层在位服务器端复杂类型省城客户端javascript类型时将:

  • 会把没有应用[System.Web.Script.Serialization.ScriptIgnore]的公有属性(property)或公有字段(field)映射到客户端javascript类型中;
  • 不会把该复杂类型的私有字段映射到客户端javascript类型中;
  • 不会把改负责类型的方法(method)映射到客户端javascript类型中;
  • 我们也可以使用如下语法在客户端直接创建该复杂类型:
  • var myObj = new [NameSpace].[ClassName]();