您好,欢迎访问三七文档
当前位置:首页 > 行业资料 > 酒店餐饮 > ASP[1].NET+AJAX教程
介绍尽管AJAX是种客户端技术,但实际上的开发过程,它经常要调用一个服务器端的过程。通常,网站上的数据是存放在一个关系型数据库中,为了让AJAX更有用处,处理服务器端数据需要一种简单可靠的方法。幸运的是,ASP.NETAJAX提供了一种有效的基础架构来做这件事情,浏览器和服务器在Internet上可以进行AJAX通信。自然而然,WebService在数据传输和客户端/服务器之间的一般通信方面可以扮演一个重要角色。本文就演示了如果通过ASP.NETAJAX调用ASP.NETwebservices。软件需求本文所有的范例都是使用ASP.NETAJAXRC版,而且,要在SQLServer2005(Express版即可)上有一个Northwind数据库。范例使用VisualStudio2005作为开发环境。范例场景范例开发了一个Web页面,用于输入Northwind数据库职员表中的职员数据。页面通过ASP.NETAJAX功能,调用一个WebService来完成职员表中的数据增、删、改、查。创建一个WebService作为开始,使用VisualStudio2005创建一个新的Web站点,注意把ASP.NETAJAX项目模板添加到新站点对话框,这个对话框包括一个ASP.NETAJAXEnabledWebSite模板。图1:新站点创建模板使用ASP.NETAJAXEnabledWebSite模板创建的新站点和用普通方法创建的站点区别如下:·它的Web.config自动包括许多ASP.NETAJAX专用的配置信息。·System.Web.Extensions程序集被添加到引用中。当然,我们可以更改一个普通的Web站点,以使之符合AJAX要求,但模板可以大大简化我们的工作。现在我们创建了一个新的Web站点,添加一个新的webservice并命名为EmployeeService.asmx,EmployeeService将包括5个Web方法MethodNameDescriptionGetEmployees()返回Employees表里的雇员列表。这个列表是一个Employee对象数组GetEmployee()接收EmployeeID参数返回Employee对象的详细信息Insert()给Employees表里增加一个新的雇员信息Update()更新Employees表里的某个雇员信息Delete()删除Employees表里的某个雇员信息表1:EmployeeService中的Web方法GetEmployees()和GetEmployee()方法以Employee对象的形式返回数据,因此,首先创建一个Employee类。右键单击App_Code文件夹,选择“添加新项…”,添加一个叫Employee的类,下面显示Employee类的全部代码:publicclassEmployee{privateintintEmployeeID;privatestringstrFirstName;privatestringstrLastName;publicintEmployeeID{get{returnintEmployeeID;}set{intEmployeeID=value;}}publicstringFirstName{get{returnstrFirstName;}set{strFirstName=value;}}publicstringLastName{get{returnstrLastName;}set{strLastName=value;}}}Employee类申明三个Private变量来分别存放employeeID,firstname和lastname,三个变量再封装在三个public属性中:EmployeeID,FirstName和LastName。打开web.config文件,添加connectionStrings部分如下:connectionStringsaddname=connstrconnectionString=datasource=.\sqlexpress;initialcatalog=northwind;integratedsecurity=true//connectionStrings这部分存放数据库链接字符串,用于指向Northwind数据库,确保修改SqlServer名称、IP地址以及验证方式以和我们的开发环境相符。现在,打开EmployeeService.cs添加如下代码:privatestringstrConn=;publicEmployeeService(){strConn=ConfigurationManager.ConnectionStrings[connstr].ConnectionString;}代码使用了ConfigurationManager类来读取配置文件中的数据库链接字符串,并存放在一个类级别的变量strConn中,这个变量将被下面的所有WebMethod所使用。现在,添加GetEmployees()webmethod:[WebMethod]publicEmployee[]GetEmployees(){SqlConnectioncnn=newSqlConnection(strConn);cnn.Open();SqlCommandcmd=newSqlCommand();cmd.Connection=cnn;cmd.CommandText=selectemployeeid,firstname,lastnamefromemployees;SqlDataReaderreader=cmd.ExecuteReader();ListEmployeelist=newListEmployee();while(reader.Read()){Employeeemp=newEmployee();emp.EmployeeID=reader.GetInt32(0);emp.FirstName=reader.GetString(1);emp.LastName=reader.GetString(2);list.Add(emp);}reader.Close();cnn.Close();returnlist.ToArray();}代码创建了SqlConnectionandSqlCommand对象,然后执行SELECT查询,以获取Employees表中EmployeeID,FirstName和LastName字段。结果通过SqlDataReader返回。然后,创建一个generic-basedEmployee数组,通过While循环,给每个Employee实例的属性赋值。当While循环完毕的时候,关闭SqlDataReader和SqlConnection。GetEmployees()方法返回的类型是Employee数组。因此,genericList使用List类中的ToArray()方法来转换成Employee数组。现在,添加一个GetEmployee()webmethod如下:[WebMethod]publicEmployeeGetEmployee(intpEmployeeId){SqlConnectioncnn=newSqlConnection(strConn);cnn.Open();SqlCommandcmd=newSqlCommand();cmd.Connection=cnn;cmd.CommandText=selectemployeeid,firstname,lastnamefromemployeeswhereemployeeid=@id;SqlParameterid=newSqlParameter(@id,pEmployeeId);cmd.Parameters.Add(id);SqlDataReaderreader=cmd.ExecuteReader();Employeeemp=newEmployee();while(reader.Read()){emp.EmployeeID=reader.GetInt32(0);emp.FirstName=reader.GetString(1);emp.LastName=reader.GetString(2);}reader.Close();cnn.Close();returnemp;}GetEmployee()webmethod接受一个employeeID参数作为输入,代码和前面的非常相似,但这次只返回一个employee。注意,使用SqlParameter来定义传入的EmployeeID。现在,再添加Insert()、Update()和Delete()webmethods,其中,Insert()webmethod以要添加的Employee的firstname和lastname作为参数,Update()webmethod以要更新的employeeID以及新的firstname和lastname作为参数,并执行UPDATE语句,Delete()webmethod以要删除的employeeID作为参数,然后执行DELETE语句[WebMethod]publicintInsert(stringpFirstName,stringpLastName){SqlConnectioncnn=newSqlConnection(strConn);cnn.Open();SqlCommandcmd=newSqlCommand();cmd.Connection=cnn;cmd.CommandText=insertintoemployees(firstname,lastname)values(@fname,@lname);SqlParameterfname=newSqlParameter(@fname,pFirstName);SqlParameterlname=newSqlParameter(@lname,pLastName);cmd.Parameters.Add(fname);cmd.Parameters.Add(lname);inti=cmd.ExecuteNonQuery();cnn.Close();returni;}[WebMethod]publicintUpdate(intpEmployeeId,stringpFirstName,stringpLastName){SqlConnectioncnn=newSqlConnection(strConn);cnn.Open();SqlCommandcmd=newSqlCommand();cmd.Connection=cnn;cmd.CommandText=updateemployeessetfirstname=@fname,lastname=@lnamewhereemployeeid=@id;SqlParameterfname=newSqlParameter(@fname,pFirstName);SqlParameterlname=newSqlParameter(@lname,pLastName);SqlParameterid=newSqlParameter(@id,pEmployeeId);cmd.Parameters.Add(fname);cmd.Parameters.Add(lname);cmd.Parameters.Add(id);inti=cmd.ExecuteNonQuery();cnn.Close();returni;}[WebMethod]publicintDelete(intpEmployeeId){SqlConnectioncnn=newSqlConnection(strConn);cnn.Open();SqlCommandcmd=newSqlCommand();cmd.Connection=cnn;cmd.CommandText=deletefromemployeeswhereemployeeid=@id;
本文标题:ASP[1].NET+AJAX教程
链接地址:https://www.777doc.com/doc-4125885 .html