首页 > 编程语言 >三、继续进行——Asp.net ajax的主要控件

三、继续进行——Asp.net ajax的主要控件

时间:2022-12-08 11:08:51浏览次数:48  
标签:UpdatePanel 控件 Asp ajax 回送 ScriptManager 页面


 

一、前言

打开工具箱的Ajax extensions可以看到五个ajax控件,在vs2008中它们已经集成到了.net framerwork3.5中,如果是之前版本的vs则需要自己去下载文件来安装。这五个控件在ajax中是非常常用的,所以微软才将他们集成到vs中来,下面将简单的介绍着五个控件及它们的重要属性。

 

二、重中之重——ScriptManager

看名字就知道,着家伙肯定是个领导,如果你真的这么想,那你就太聪明了,如果要使用asp.net ajax的话,每个页面都必须“有且只有一个”ScriptManager,因为它是用来处理页面上的所有组件以及页面局部更新,生成相关的客户端代理脚本以便能够在JavaScript中访问Web Service。你说它重要不重要,没有它其它都白扯。下面介绍下它的主要属性:

1)       <Services>属性,可以通过其下的<asp:ServiceReference Path="xx.asmx" />来关联web服务

2)       AsyncPostBackTimeout异步回传时的超时限制,默认为90秒,如果设为0则表示无限制

3)       其它的属性还有很多,随便看看吧,需要用时能想起就好了

 

三、狐假虎威?NO,代理人——ScriptManagerProxy

有ScriptManager不就够了吗?为什么还要ScriptManager的代理呢?呵呵,这时因为母板页存在的原因,因为每个使用asp.net ajax的页面都必须“有且只有一个”ScriptManager,而如果这个页面是继承母板页而来,并且母板页中也有一个ScriptManager的话,就必须在页面中使用这个ScriptManagerProxy控件了,它的使用方法和ScriptManager一样。

 

四、傻瓜控件——UpdatePanel

只要你使用它你就会爱上它,最开始用它时你会觉得,ajax原来如此简单,实在没有比这更傻瓜的控件了,因为你只要将控件拖动到UpdatePanel中,就可以按普通的方法编写ajax效果的代码了。

UpdatePanel可以用来创建丰富的局部更新Web应用程序,它是ASP.NET 2.0 AJAX Extensions中很重要的一个控件,其强大之处在于不用编写任何客户端脚本,只要在一个页面上添加几个UpdatePanel控件和一个ScriptManager控件就可以自动实现局部更新。

重要属性:

1)       ChildrenAsTriggers:当UpdateMode属性为Conditional时,UpdatePanel中的子控件的异步回送是否会引发UpdatePanle的更新。

2)       UpdateMode:表示UpdatePanel的更新模式,有两个选项:Always和Conditional。

                        i.              Always是不管有没有Trigger,其他控件都将更新该UpdatePanel(这个我试过好像不是这样,但教程中这样说,我不知道是不是版本的原因,试一下就知道了)

                       ii.              Conditional表示只有当前UpdatePanel的Trigger,或ChildrenAsTriggers属性为true时当前UpdatePanel中控件引发的异步回送或者整页回送,或是服务器端调用Update()方法才会引发更新该UpdatePanel。

这个看起来比较复杂,如果页面中只有一个Updatepanel,使用Always就不会出什么问题,但是如果一个页面中有多个Updatepanel的话就必须使用Conditional,并且需要将ScriptManage的EnablePartialRendering设置为true。

3)       Triggers——触发器:在ASP.NET AJAX中有两种Triggers:分别为AsyncPostBackTrigger和PostBackTrigger。

                        i.              AsyncPostBackTrigge用来指定某个服务器端控件以及其将触发的服务器端事件作为该UpdatePanel的异步更新触发器,它需要设置的属性有控件ID和服务端控件的事件

                       ii.              PostBackTrigger用来指定在UpdatePanel中的某个服务端控件,它所引发的回送不使用异步回送,而仍然是传统的整页回送

注意:Updatepanel可能和某些控件结合使用可能会出现未知的异常,所以请注意。

 

五、进度条容器——UpdateProgress

数据更新有快有慢,当请求从客户端发出后到服务器端接收到并响应结果到客户端的时间如果比较长的话,给用户一个进度条是最好的选择,因为这样可以使用户知道自己的等待的是有意义的,而不会为了某个奇怪的错误浪费时间等待不可能有需要的结果出来的这种结果。UpdateProgress就是这样的控件,只需要设置AssociatedUpdatePanelID来确定它是关联那个UpdatePanel就可以了。

 

六、时钟——Timer

如果需要定时刷新的话,那么Timer控件是不二之选,而且使用也非常简单,只要设置Interval属性即刷新的间隔时间——以毫秒为单位,然后双击Timer控件编写代码即可。

 

 

标签:UpdatePanel,控件,Asp,ajax,回送,ScriptManager,页面
From: https://blog.51cto.com/u_15906220/5920720

相关文章

  • dojo,jquery,mootools三种框架实现的ajax效果
    经常在微BLOG上,或者象tudou,ku6等视频网站上,看到"查看评论"的按钮,点后就显示列表,是AJAX效果的,找到老外的一篇文,讲这个实现:​​​http://davidw......
  • 【NX二次开发】线性尺寸控件-nan(ind)
     #include<cmath>doubledouLinear_dim0=this->linear_dim0->GetProperties()->GetDouble("Value");if(isnan(douLinear_dim0)){//错误,值应为数字!} ......
  • DataSphere Studio数据应用开发管理集成框架【DSS基础】
    https://github.com/WeBankFinTech/DataSphereStudio/https://gitee.com/WeBank/DataSphereStudio基于插拔式的集成框架设计,及计算中间件Linkis,可轻松接入上层各种数......
  • day34-JSON&Ajax02
    JSON&Ajax021.Ajax基本介绍1.1Ajax是什么AJAX即“AsynchronousJavaScriptAndXML”(异步JavaScript和XML)Ajax是一种浏览器异步发起请求(指定发哪些数据),局部更新页面......
  • 自定义的Qt轮播图控件
    该控件是模仿了一个名叫QCoolPage的开源项目里的轮播图控件,但是实现方式跟它的完全不同。QCoolPage里是用QPushButton和QLabel加上自定义styleSheet实现的;而我是用自定义控......
  • ASP.NET MVC中设置跨域
    ASP.NETMVC中设置跨域1、什么是跨域请求js禁止向不是当前域名的网站发起一次ajax请求,即使成功respone了数据,但是你的js仍然会报错。这是JS的同源策略限制,JS控制的并不是......
  • 使用ajaxFileUpload实现文件异步上传
     最近在项目中遇到要使用ajax提交包含file输入框的表单的情况,网上查了下,发现ajaxFileUpload.js插件的比较多。就研究了下,发现真的不错。传统的包含file输入框的表单提交遇......
  • Asp.Net 排出过滤特殊字符串
      safe_360.csusingSystem;usingSystem.Collections.Generic;usingSystem.Text.RegularExpressions;usingSystem.Web;///<summary>///safe_360的摘要说......
  • 原生Ajax发送请求
    GET//1.创建一个xmlhttpRequest对象varxmlhttp=null;varres;if(window.XMLHttpRequest){xmlhttp=newXMLHttpRequest();}els......
  • 第3章 使用中间件管道处理请求(ASP.NET Core in Action, 2nd Edition)
    本章包括什么是中间件使用中间件服务静态文件使用中间件添加功能组合中间件以形成管道使用中间件处理异常和错误在上一章中,您对完整的ASP.NETCore应用程序进行了......