基于微软ASP.NET AJAX框架开发幻灯片播放网页

asp.net 图片幻灯片切换 非常好用的图片幻灯片切换代码,适合asp.net,内有例子。 立即下载

基于微软ASP.NET AJAX框架开发幻灯片播放网页

一、 简介
    最近,微软ASP.NET Ajax 1.0框架以其完整的基于Ajax的web开发方案呈现在web技术人员的前面,凭借与遗留ASP.NET系统的有机整合以及完全面向对象的客户端JavaScript组件模型两大绝杀正在引起越来越多的基于.NET平台的web开发者的关注。本文应该属于这个框架的基础篇,我想通过一个具体的例子(播放web幻灯片)来向读者展示如何使用该框架提供的面向对象的客户端JavaScript组件模型来进行常规的WEB开发。

    在公司网站中,我们经常需要一个基于Web幻灯片形式的机制来演示自己的(也可能是别人的)产品。当然,你可以使用普通的JavaScript来开发这样的幻灯片;但是,借助于ASP.NET AJAX框架,这一开发工作将得到极大简化。在本文示例中,我们正是想将借助于Web页面方法和客户端脚本扩展技术开发这样一个简单的幻灯片。终端用户可以播放和暂停幻灯片,也可以进行循环播放,还可以手工控制.
二、 创建一个ASP.NET AJAX-Enabled网站
   
    启动Visual Studio 2005,然后选择菜单项“文件|新建网站…”,使用模板“ASP.NET AJAX-Enabled网站”创建一个新的网站,并命名工程为SlideShow(选择Visual C#作为内置语言)。此后,系统应该自动地添加对必要的程序集—System.Web.Extension.dll的参考。此外,你会注意到一个ScriptManager服务器控件自动地添加到页面中。注意,这个服务器控件作为整个ASP.NET AJAX框架的控制中心。

    然后,添加一个具有两行和一列的HTML表格,再在第一行添加一个<img>标签,在第二行添加六个HTML按钮控件。下图1展示web表单Default.aspx的大致布局。 
三、 创建SlideShow类
    右单击工程添加一个新的java脚本文件,并命名为JScript.js。在此,我们将创建一个称为SlideShow的类,它将负责完成所有的幻灯片操作任务—例如播放、暂住和导航幻灯片。注意,这个SlideShow类的开发是基于ASP.NET AJAX客户端脚本扩展技术,具体实现代码如下所示:
   
Type.registerNamespace( " Demo " ); // 构造函数及私有变量声明 Demo.SlideShow = function(){ this ._slides = new Array(); this ._delay = 2000 ; this ._currentIndex = 0 ; this ._pause = false ; } // 原型定义部分 Demo.SlideShow.prototype = { get_Slides:function() { return this ._slides; }, set_Slides:function(value) { this ._slides = value; }, get_Delay:function() { return this ._delay; }, set_Delay:function(value) { this ._delay = value; }, get_CurrentIndex:function() { return this ._currentIndex; }, set_CurrentIndex:function(value) { if (value < 0 ) { this ._currentIndex = this ._slides.length - 1 ; return ; } if (value >= this ._slides.length) { this ._currentIndex = 0 ; } else { this ._currentIndex = value; } }, get_IsPaused:function() { return this ._pause; }, set_IsPaused:function(value) { this .pause = value; }, Pause:function() { this ._pause = true ; }, Play:function() { this ._pause = false ; window.setTimeout( " slideshow.ShowImage() " , this .get_Delay()); }, ShowFirst:function() { this ._currentIndex = 0 ; this .ShowImage(); }, ShowLast:function() { this ._currentIndex = this ._slides.length - 1 ; this .ShowImage(); }, ShowNext:function() { var newIndex = this ._currentIndex + 1 ; this .set_CurrentIndex(newIndex); this .ShowImage(); }, ShowPrevious:function() { var newIndex = this ._currentIndex - 1 ; this .set_CurrentIndex(newIndex); this .ShowImage(); }, ShowImage:function() { var img = $ get ( " Image1 " ); if (img.style.visibility == " hidden " ) { img.style.visibility = " visible " ; } var slides = this .get_Slides(); var curIndex = this .get_CurrentIndex(); img.src = slides[curIndex]; if ( this .get_IsPaused() == false ) { this .set_CurrentIndex(curIndex + 1 ); this .Play(); } } } // 注册类 Demo.SlideShow.registerClass( " Demo.SlideShow " ); // 创建全局SlideShow类的实例 var slideshow = new Demo.SlideShow();



    在代码的最开始,我们先注册一个称为Demo的新的命名空间。然后,创建一个称为SlideShow的类。该SlideShow类的构造器共声明了四个私有成员变量。其中,_slides变量指向一个包含幻灯片图像URL的数组;_delay变量指示两张相邻的幻灯片播放的间隔时间(单位为毫秒);_currentIndex变量存储了当前幻灯片在_slides数组中的索引值;最后,_pause变量指示幻灯片被暂停(true)还是处于运行态(false)。

    接下来,在SlideShow类的原型中,我们定义了与前面的四个属性相关联的getter/setter方法,也就是Slides、Delay、CurrentIndex和IsPaused。其它方法都比较基本,因此我们仅介绍方法set_CurrentIndex()。这个set_CurrentIndex()属性方法负责检查提供给它的索引值。如果该值超出slides数组上下标边界,那么,它会把这个值调整到0或数组的长度减1(根据具体情况而定)。这是很关键的,这样以来,幻灯片就可以进行循环播放。

    接下来,Pause()方法简单地把成员变量_pause设置为true—这可以控制幻灯片如何暂停。
Play()方法负责播放幻灯片。它首先设置_pause变量为false,然后调用JavaScript对象windows的setTimeout()方法。该setTimeout()方法接受两个参数:在经过特定时间延迟后要执行的代码;在此代码执行完后对应的时间跨度(单位为毫秒)。在本例中,这个延迟值来自于get_Delay()属性。在此,该setTimeout()方法将调用ShowImage()方法。

    ShowImage()方法负责执行显示一个图像的核心工作。它引用了CurrentIndex和Slides两个属性,然后把图像标签的src属性设置为Slides数组中对应的适当的图像。注意,Image1是一个图像标签的ID—我们将在后面添加它。此外,还应注意$get()方法的用法,它等价于document.getElementById()方法。然后,CurrentIndex的值加1并且再次调用Play()方法。这样以来,将形成一个无限循环,而幻灯片将持续不断地播放下去。

最后的四个方法—ShowFirst(),ShowLast(),ShowNext()和ShowPrevious()方法只是简单地调整_currentIndex成员变量的值,并调用ShowImage()方法来显示一张幻灯片。

    在创建类结束后,我们使用registerClass()方法把它注册到MS AJAX框架。最后,声明一个SlideShow类的全局实例变量。
最后打开Web页面Default.aspx,选择ScriptManager控件,并且设置它的EnablePageMethods属性为true,而且还要把JScript.js文件添加到它的脚本集合中。

四、 创建一个返回图像URL的web方法
    我们前面创建的SlideShow类允许你使用Slides属性来指定幻灯片。一种使用Slides属性的方法是创建一个图像URL的常量数组。然而,更为适当的方法则是从服务器端得到图像URL。通过这种方式,你可以基于一些条件或甚至一种数据库驱动的逻辑返回图像。这需要我们创建一个能够返回一个图像URL数组的web方法。然后,从客户端JavaScript脚本中调用这个web方法。
接下来,让我们开始创建下列web方法。
   
[WebMethod] public static string [] GetSlides(){ string [] slides = new string [ 4 ]; slides[ 0 ] = " images/slide1.jpg " ; slides[ 1 ] = " images/slide2.jpg " ; slides[ 2 ] = " images/slide3.jpg " ; slides[ 3 ] = " images/slide4.jpg " ; return slides;



    注意,这个GetSlides()是一个静态方法,并且被标记有[WebMethod]属性。它返回一个包含图像URL的字符串数组。在这个示例中,我们对图像URL进行了硬编码,但是你可以很容易地把它修改为使用数据库或任何其它方式来存储图像数据。

五、 从JavaScript脚本中调用GetSlides() web方法
    现在,既然我们已经准备好GetSlides() Web方法,那么接下来,我们需要从客户端JavaScript脚本中调用它。现在,切换到Web页面的HTML源视图并且在web表单的<HEAD>节中添加下列<script>块:
   
< script type = " text/javascript " > function pageLoad(){ var img = $ get ( " Image1 " ); img.style.visibility = " hidden " ; PageMethods.GetSlides(OnSuccess,OnError,OnTimeOut); } function OnSuccess(result){ slideshow.set_Slides(result); slideshow.set_Delay( 2000 ); slideshow.Play(); } function OnError(result){ alert(result.get_message()); } function OnTimeOut(result){ alert(result); } </ script >


任何时候当一个web表单加载到客户端时,该<script>块包含的pageLoad()函数将被AJAX框架自动调用。它非常类似于ASP.NET的服务器端Page_Load事件。在这个pageLoad()方法中,我们用于实现暂时的图像隐藏。这样做的目的是为了避免浏览器显示不连续的图像标识。然后,借助于内置的类—PageMethods,pageLoad()函数调用GetSlides() web方法。在ASP.NET AJAX中,所有的执行都是异步的,因此,GetSlides()方法将接受一个回调函数—在成功时执行OnSuccess;出现错误时执行OnError;而在超时条件下则执行OnTimeOut。
在此,OnSuccess()函数接受一个由GetSlides() web方法返回的字符串数组并且相应地设置SlideShow类的Slides属性。然后,它把幻灯片的延迟播放时间设置为2000毫秒。最后,它调用SlideShow类的Play()方法开发播放幻灯片。
对于OnError()和OnTimeOut()方法,它们只用于简单地显示各自相应的错误消息。
接下来,按如下所示修改HTML按钮控件标记:
<input id="Button1" ... onclick="slideshow.ShowFirst()" />
<input id="Button2" ... onclick="slideshow.ShowPrevious()" />
<input id="Button5" ... onclick="slideshow.Pause()"/>
<input id="Button6" ... onclick="slideshow.Play()"/>
<input id="Button3" ... onclick="slideshow.ShowNext()" />
<input id="Button4" ... onclick="slideshow.ShowLast()"/>
如你所见,这些按钮的onclick事件简单地调用SlideShow类的各个方法。
好了,至此,整个示例编写结束!最后,按F5运行上面的web表单,你应该会看到我们的幻灯片在浏览器中开始播放了。
六、 小结
再次想说的是,本文中的例子仅展示了微软ASP.NET Ajax 1.0框架编程的非常基础的一面,如果你真对这个框架感兴趣,那么请抓紧动手试一下吧!
asp.net两个不错的图片幻灯片制作实例 立即下载

相关推荐

asp图片切换幻灯特效代码

asp图片切换幻灯特效代码,适用企业网站

ASP.NET实现Flash新闻幻灯片效果

原本以为很简单的一个小功能,没想到也花了一点时间去磨了几下。遇到问题当然是先www.g.cn一下,然而所找到的结果都是将数据操作写在页面的后台。这样对于整个Solution尤其是分了几层的解决方案来说,要把数据库操作搞到页面上去是不太可取之处的吧。特别感谢网友爱在戏院前,提醒可以用json的模式去把前头的字符拼出来,返回个字符串回去就可以了。做幻灯片效果也的确是这样:要么就是用XML做数据源,要...

weixin_30335575的博客 187

ASP.NET MVC5 入门PPT

课题使用的 ASP.NET MVC5教学PPT,是入门的不错选择

ASP.NET+JS 制作幻灯片

ASPX页面代码:http://www.w3.org/1999/xhtml" >#imgTitle { FILTER: ALPHA(opacity=70); LEFT: 0px; OVERFLOW: hidden; POSITION: relative; TEXT-ALIGN: right}#imgTitle_up { LEFT: 0px; HEIGHT: 1px; TEXT-ALIGN: l

Hypo.Zhong's Blog 2235

深度学习:STGCN学习笔记

目录标题基于图神经网络的图分类问题GCN在行为识别领域的应用主要任务研究思路ST-GCN(SpatialTemporal Graph Convolutional Networks for Skeleton-Based Action Recognition)解读原论文解决问题主要贡献核心思想简介OpenPose 预处理基于人体关键点构造graph构造单帧graph(空间域)构造帧间graph(时间域)ST-GCN模型采样函数权重函数空域图卷积空间-时间模型分区策略可学习的边重要性权重TCNST-GCN模型的实

zhe470719的博客 3万+

解读区块链在制药和物流管理中具备的优势

供应链透明度是建立药品弹性供应链的关键,如何更好地促进端到端的透明度,促进合作伙伴和消费者之间的信任度是当前医药和物流行业高管们关注的话题,区块链技术可以很好的帮助他们。 链集市 · 让区块链落地更简单 《区块链行业观察》专栏·第 31 篇 作者丨Shams Rahman 图片丨来源于网络 作者介绍:本文作者为Shams Rahman教授,是RMIT大学商业IT和物流学院的供应链管理教授、研究与创新部门副主任。本文中文版本由链集市团队编译整理,英文版权归原作者所有,中文转载请联系编译。 新冠肺炎疫情的爆发

CECBC的博客 623

基于STM32的智能温控风扇系统:从原理图到Proteus仿真完整开源

嵌入式系统开发中,传感器数据采集与环境控制是核心应用场景之一。STM32作为主流微控制器,常被用于构建智能温控设备。本文以STM32F103C8T6为主控芯片,结合DHT11温湿度传感器,系统讲解如何通过PWM调速技术实现风扇的自动控制。从硬件原理图设计、C语言编程实现,到Proteus仿真验证,完整呈现一个多功能智能温控风扇系统的开发流程。内容涵盖温度到PWM占空比的映射策略、滞回控制防止临界点抖动、手动与自动模式切换等关键技术,并针对调试中的常见问题给出排查方法。该方案可应用于路由器散热、3D打印机辅助

weixin_34405557的博客 348

UFS Host Controller工作流程

contentsUFS架构图HCI接口架构传输请求接口(Transfer Request Interface)UFS 主机控制器寄存器接口(host controller Interface)UTP 层数据传输Host Software与Host Controller的交互Host Controller初始化配置与控制CRYPTOCFG 配置过程 该文档描述了UFS Host Controller的主要运作流程以及在开源内核代码hisi平台中的host controller的接口函数设计 文档大部分内容参

Frank_sample的专栏 1万+

精化集ASP.NET AJAX与ASP.NET MVC分类第二轮筛选结果

以下是包同学导给我的清单。老赵的第二轮把关很严,杀了几乎99%的文章。不过似乎有少部分并没有经过我的手,可能是其他同学转过来的吧。第三轮老赵依旧会严格把关,肯定也会杀更多(包括通过其他同学第二轮的)文章。请大家监督,有疑问请及时告诉老赵。 AJAX与ASP.NET AJAX部分 AS...

chuifuhuo6864的博客 196

腾讯地图自定义瓦片地图开发实战:从坐标定位到图层融合

本文详细介绍了腾讯地图自定义瓦片地图开发的全流程,从坐标定位到图层融合的实战技巧。通过具体代码示例和常见问题解决方案,帮助开发者快速掌握腾讯地图API的自定义瓦片功能,实现室内外地图的无缝衔接和特殊图层的叠加展示。

weixin_42526015的博客 170

YOLOv11多模态融合实战:基于YOLOFuse的RGB与红外线(IR)协同检测技术解析

本文深入解析了YOLOv11多模态融合技术,重点介绍基于YOLOFuse框架的RGB与红外线(IR)协同检测方法。通过动态权重分配、跨模态特征对齐等创新设计,实现在低光照等复杂环境下的高精度目标检测,mAP提升高达37%。文章包含实战案例、训练技巧和部署方案,为计算机视觉开发者提供完整的多模态融合解决方案。

weixin_29038345的博客 290

(收藏)《博客园精华集》AJAX与ASP.NET AJAX部分

AJAX与ASP.NET AJAX部分 ASP.NET Ajax =》WCF(.NET 3.5 Beta 2,VS2005) 作者: dudu Ajax基石脚本异步并发调用参数传递 作者: birdshome 扩展JavaScript的时候,千万要保留其原来的所有功能 作者...

234

电脑蓝牙与ESP32蓝牙连接,让电脑发现ESP32

让PC发现ESP32蓝牙

injre! injre~ 5445

50 个交互式 Silverlight 应用程序

Silverlight 由超过 100,000 家公司使用并被全球超过 400 万开发人员理解的技术打造而成,并得到 Microsoft 工具、技术和蓬勃发展的合作伙伴生态系统的全力支持。来自多个来源的数据被集成,以提供当前和过去野火的多媒体丰富的、基于地图的视图。利用战略和欺骗手段将你的武装部队调动到对手的领土并占领他们的总部。失败者将被埋在耻辱之中。FallInGame.com 是一个在线浏览器游戏构建器,您可以在其中创建自己的游戏、与朋友分享、撰写评论、评价其他玩家和游戏,并获得经验和进度。

共同学习、强我国家 545

达梦的自定义类型和存储过程支持创建同义词,不支持同义词使用?

达梦8的自定义类型和存储过程支持创建同义词,但是通过同义词调用报错,而在oracle上验证没有问题,难道是发现了达梦的bug了?非也非也,详情请见下文

wy071218的专栏 979

【花雕学编程】Arduino FOC 之AS5048A磁编码器模块

您的硬件平台、使用场景和Arduino版本可能影响使用方法的选择。在Arduino平台上实现FOC可以提供平滑的运行和高度的扭矩、速度和位置控制,它通过精确控制电机的电流和电压来实现高效率、高精度和低噪声的操作。5、创新:Arduino可以让你用电子的方式来表达你的创意和想象,你可以用Arduino来制作各种有趣和有用的项目,如机器人、智能家居、艺术装置等。1、高性能电机控制:FOC是一种高级的电机控制算法,可以精准控制PMSM(永磁同步电机)和BLDC(无刷直流)电机,实现平滑的转速和扭矩输出。

雕爷学编程 1496
上一篇: ASP.Net 中常用的数据库连接方式
下一篇: ASP.NET AJAX入门系列相关资料收集
sqlmlm
博客等级 码龄19年 12粉丝 22原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值