异步调用服务器端方法

在 VS05, 可以轻松的实现异步调用服务端方法, 不必自己劳神伤脑的写 AJAX, 只要安装了 AJAX 组件就可以轻松实现!

本文的实例需要以下 6 个步骤:

1. 你的 VS05 必须安装 AJAX.NET 1.0正式版(可以到 http://asp.net/ajax 免费下载).
2. 在需要实现异步调用服务端方法的页面放上 ScriptManager 控件, 但不需要 UpdatePanel 控件.(ScriptManager 控件在你安装了 AJAX.NET 后就能看到).
3. 修改 Web.config 文件.
4. 为网站添加 Web服务 文件.(每添加一个该文件, VS 会在网站根目录生一个同名的 .asmx 文件, 一个同名代码文件(.cs, .vb)放在 App_Code 文件夹)
5. 在 Web服务 的代码写好用于客户端异步调用的方法.
6. 在网页(aspx)写好数据发送与数据返回结果处理等脚本.

下面一一详细贴出源代码.

default.aspx
HTML CODE
  
  
  
  
<% @ Page Language = " C# " AutoEventWireup = " true " CodeFile = " Default2.aspx.cs " Inherits = " Default2 " %> <% @ Register Assembly = " System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35 " Namespace = " System.Web.UI " TagPrefix = " asp " %> <! DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"; > < html xmlns ="http://www.w3.org/1999/xhtml"; > < head id ="Head1" runat ="server" > < title > 无标题页 </ title > </ head > < body > < form id ="form1" runat ="server" > < div > < asp:ScriptManager ID ="ScriptManager1" runat ="server" > < Services > < asp:ServiceReference Path ="WebService.asmx" InlineScript ="true" /> <% -- Path 值为.asmx 文件路径 -- %> </ Services > </ asp:ScriptManager > < input id ="Text1" type ="text" />< input id ="Button3" type ="button" value ="Hello!-最简单的异步调用" onclick ="helloCodeStudio()" /> </ form > < script type ="text/javascript" > function helloCodeStudio(){ // 我们要为每个 WebService 传递一个客户端脚本方法用于更新页面 WebService.HelloCodeStudio(onHelloCodeStudioReturned); } function onHelloCodeStudioReturned(rtnValue){ // $get 方法是 AJAX.NET 定义好的一个方法, 我们只管用就行了. // 该方法等价于 document.getElementById(var elementId) $get( " Text1 " ).value = rtnValue; } </ script > </ body > </ html >


WebService.cs
C# CODE
  
  
  
  
using System; using System.Web; using System.Collections; using System.Web.Services; using System.Web.Services.Protocols; using System.Web.Script.Services; /// <summary> /// WebService 的摘要说明 /// </summary> [WebService(Namespace = " http://tempuri.org/ " )] [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)] [ScriptService] // 表示整个类的所有方法都允许客户端脚本异步调用 public class WebService : System.Web.Services.WebService { public WebService () { // 如果使用设计的组件,请取消注释以下行 // InitializeComponent(); } [WebMethod] public string HelloCodeStudio() { // 简单到只返回一个字符串 return " Hello Code Studio " ; } }


web.config
XML CODE
  
  
  
  
<? xml version="1.0" ?> < configuration > < appSettings /> < connectionStrings /> < system.web > < compilation debug ="true" > < assemblies > < add assembly ="System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" /></ assemblies ></ compilation > < authentication mode ="Windows" /> <!-- 为 system.web 配置节加上 --> < httpHandlers > < remove verb ="*" path ="*.asmx" /> < add verb ="*" path ="*.asmx" validate ="false" type ="System.Web.Script.Services.ScriptHandlerFactory" /> < add verb ="GET,HEAD" path ="ScriptResource.axd" type ="System.Web.Handlers.ScriptResourceHandler, System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" validate ="false" /> </ httpHandlers > </ system.web > </ configuration >
 

你可能感兴趣的:(webservice,服务器,assembly,Authentication,Path,compilation)