专栏首页技术小讲堂ASP.NET AJAX(2)__ASP.NET 2.0 AJAX Extensions

ASP.NET AJAX(2)__ASP.NET 2.0 AJAX Extensions

ASP.NET 2.0 AJAX Extensions为我们提供的主要功能如下

序列化和反序列化 客户端访问Web Service方法 服务器端AJAX控件 _____ScriptManager _____UpdatePanel _____Extender

微软的ASP.NET AJAX有一点非常让人感觉神奇的一点,也算是他宣传的一个鳌头,说的是,所有的ASP.NET程序员,不用写任何javascript代码就可以实现AJAX,那么UpdatePanel呢,就是说着话的资本,我们也知道,几乎所有的服务端控件,只要简单的把它嵌套在UpdatePanel里,然后做一些简单的设置,就可以实现为一个AJAX效果,但是,这样也就很容易造成一个AJAX的滥用,我们知道,AJAX的特点嫩,就是提高用户体验,减少了客户端和服务器端之间的数据访问,而使用UpdatePanel,实际上并没有减少发送给服务器端的数据量,相反,它增加了一些他需要的数据,这也使UpdatePanel经常变成一个性能杀手,所以我们在使用中一定要做到合理使用,当然啦,要做一个好的AJAX应用,不写JAVASCRIPT代码是不可能的,其实我以下的文章里,或者我们的实际应用里将会写大量的javascript代码,也幸亏吧,VS给我们提供和功能强大的代码提示功能,减少了错误率,也同时让我们变懒了很多,反正任何东西也是有两面性的,小白作为一个IT界的菜鸟,就不多做评价啦,一句话,这个代码提示功能,让我不敢爱却不得不爱,闲话少说,书归正传。。。。。。

首先写一个客户端访问Web Service的Demo

1创建一个VehicleService.asmx(Web服务):

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Services;
using System.Web.Script.Services;

/// <summary>
///VehicleService 的摘要说明
/// </summary>
[WebService(Namespace = "http://tempuri.org/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
//若要允许使用 ASP.NET AJAX 从脚本中调用此 Web 服务,请取消对下行的注释。 
[System.Web.Script.Services.ScriptService]
public class VehicleService : System.Web.Services.WebService 
{
    [WebMethod]
    [ScriptMethod]
    public Vehicle GetVehicle(string name,string fullSpeed,string weight)
    {
        return new Vehicle(name, Int32.Parse(fullSpeed), float.Parse(weight));
    }
}

这里需要注意的是,一定要在类之前家上一个ScriptService标记,在需要调用的方法前ScriptMethod标记,这样才可以保证方法在客户端可以调用

2.在要调用webservice的页面中加入ScriptManager控件,并在ScriptManager中注册这个Webservice:

<asp:ScriptManager ID="ScriptManager1" runat="server">
            <Services>
                <asp:ServiceReference Path="~/Demo01/VehicleService.asmx" />
            </Services>
        </asp:ScriptManager>

这样就可以在客户端生成一些脚本代理,方便我们调用

3然后加入脚本代码,和调用方法的按钮

<script language="javascript" type="text/javascript">
            function realizeVehicle(name, fullSpeed, myWeight) {
                VehicleService.GetVehicle(name, fullSpeed, myWeight, onSuccess);
            }

            function onSuccess(vehicle) {
               
                $get("text").innerHTML = String.format("This {0}'s full speed is {1} km/h.and this truck can load {2} kg heavy.", vehicle.Name, vehicle.FullSpeed,vehicle.Weight);
            }
        </script>
        
        <input type="button" value="FAW" onclick="realizeVehicle('FAW',150,30000);" />

在调用WebService时,在基础参数后,还需要添加一个回调函数,实际上,不只是一个回调函数,这个以后将会写到,这里先留一扣子吧 和调用一般处理程序不同的是,这里,我们就可以使用拿到的对象了,而不需要对它进行反序列化,实际上,它已经自动反序列化啦

好了,运行看看效果吧

小白   xiaoyaojian@126.com

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • ASP.NET AJAX(4)__客户端访问WebService服务器端释放WebService方法客户端访问WebService客户端访问PageMethod错误处理复杂数据类型使用基础客户端代理的

    服务器端释放WebService方法 编写一个普通的WebService 为WebService类添加自定义的属性标记__ScriptServiceAttrib...

    小白哥哥
  • ASP.NET AJAX(10)__Authentication ServiceAuthentication ServiceAuthentication Service属性Authentication

    在通常情况下,如果使用AJAX方式调用WebService,则可能被恶意用户利用,造成性能以及安全性的问题,所以我们需要使用一些验证方式来保护WebServic...

    小白哥哥
  • 全面解析C#中的异步编程为什么要异步过去糟糕的体验一个新的方式Tasks基于任务的异步编程模型Async和await时间处理程序和无返回值的异步方法结束语

    当我们处理一些长线的调用时,经常会导致界面停止响应或者IIS线程占用过多等问题,这个时候我们需要更多的是用异步编程来修正这些问题,但是通常都是说起来容易做起来难...

    小白哥哥
  • Django学习_简易博客(六)

    zx钟
  • 快速目标检测--YOLO-LITE: A Real-Time Object Detection Algorithm Optimized for Non-GPU Computers

    YOLO-LITE: A Real-Time Object Detection Algorithm Optimized for Non-GPU Computer...

    用户1148525
  • 【游戏动态】蓝港滴滴先后淡出市场:H5游戏盈利不足遭冷遇 缺少现象级的游戏大作

    摘要作为轻度游戏,H5本身缺乏盈利模式,且缺少现象级的游戏大作,加之渠道整合、流量变现这条路的艰辛困难,H5游戏行业的春天或将延迟。在鱼丸互动CEO陈钢看来,渠...

    李海彬
  • 腾讯云Terraform应用指南(一)

    《腾讯云Terraform应用指南》系列文章旨在帮助腾讯云用户借助Terraform,轻松使用简单模板语言来定义、预览和部署云基础结构,让用户通过IaC,基于腾...

    生态产品团队
  • rocketmq-2:性能测试方案&压测&选型&结论

    关注qps和lantency即可,消息丢失需要使用者在开发时处理,比如消息发送加重试机制(这里有讲究,也不是随便写的,也涉及到rocketmq-broker的流...

    千里行走
  • 基于django的视频点播网站开发-step1-项目介绍

    本文将会对该项目进行一个简单的介绍,包括项目名称、项目背景、项目功能、技术栈等等。

    山东程序员
  • 罗巴切夫斯基几何

    罗巴切夫斯基几何(Lobachevskian geometry),也称双曲几何,波利亚-罗巴切夫斯基几何或罗氏几何,是一种独立于欧几里得几何的一种几何公理系统。

    一个会写诗的程序员

扫码关注云+社区

领取腾讯云代金券