这篇文章主要为大家展示了“如何实现查看物理内存的批处理”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“如何实现查看物理内存的批处理”这篇文章吧。代码如下:@echo off color f2 echo. systeminfo|find "物理内存总量" pause>nul以上是“如何实现查看物理内存的批处理”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注辰迅云资讯频道!...
这篇文章主要为大家展示了“如何实现将文件夹变为磁盘的批处理”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“如何实现将文件夹变为磁盘的批处理”这篇文章吧。代码如下:@echo off title 原创 将文件夹变为磁盘 by secretkeyboard QQ:654525258 set /p D=请输入你要变为磁盘的文件夹路径: set /p Disk=请输入你要转换为磁盘的磁盘盘符: subst %Disk%: %D% if exist %D% goto ok goto err exit :ok @echo 命令完成 start %Disk%:\ exit :err @echo 转换失败,请检查路径 pasue>nul以上是“如何实现将文件夹变为磁盘的批处理”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注辰迅云资讯频道!...
这篇文章主要介绍了如何使用批处理把多行文本拼接成用;连接的一行,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。代码如下:@echo off :: 把多行文本拼接成用;连接的一行 :: <nul 不能省略,省略掉就无法运行下去 for /f "tokens=*" %%i in (源文件.txt) do set /p "var=%%i;" <nul >>目标文件.txt exit另一种方法: set tmpstr= setlocal enabledelayedexpansion for /f "tokens=*" %%i in (1.txt) do set tmpstr=!tmpstr! %%i echo %tmpstr% pause exit还有一种不启用变量延迟的方法,能兼容除英文双引号外的所有特殊字符: @echo off :: code by jm 2006-12-14 for /f "delims=" %%i in (1.txt) do call set "var=%%var%%%%i" echo "%var%" pause感谢你能够认真阅读完这篇文章,希望小编分享的“如何使用批处理把多行文本拼接成用;连接的一行”这篇文章对大家有帮助,同时也希望大家多多支持亿速云,关注辰讯云资讯频道,更多相关知识等着你来学习!...
这篇文章给大家介绍如何看待微软在IE浏览器中增加了禁用JavaScript选项,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。作为 2020年10月补丁安全更新的一部分,Microsoft为Windows添加了一个新选项,使系统管理员可以禁用Internet Explorer中的JScript组件。在 JScript脚本引擎 是最初包含在Internet Explorer 3.0于1996年,是微软自己的ECMAScript标准(JavaScript语言)的方言的旧组件。JScript引擎的开发结束了,该组件在2009年的Internet Explorer 8.0中被弃用,但是该引擎在所有Windows OS版本中都作为IE中的旧组件保留。多年来,威胁参与者意识到他们可以攻击JScript引擎,因为Microsoft并未积极开发它,并且很少发布安全更新,通常仅在受到威胁参与者攻击时才会发布。CVE-2018-8653, CVE-2019-1367, CVE-2019-1429和 CVE-2020-0674 是Microsoft在过去三年中必须处理的一些最近的JScript零日工作。所有这些都是国家行为者利用的错误,Microsoft必须为此急着发布补丁。一旦配接,证明的概念代码也出版GitHub上,并且这些漏洞也迅速进入的军火库利用试剂盒的开发。现在,在弃用该组件11年之后,Microsoft终于为系统管理员提供了一种默认情况下禁用JScript执行的方法。根据Microsoft的说法,2020年10月补丁程序星期二引入了新的注册表项,系统管理员可以应用这些注册表项,并阻止jscript.dll文件执行代码。有关如何完成此操作的详细信息,请参见 Microsoft文档。1.单击 开始,单击 运行,键入 regedt32 或 regedit,然后单击“ 确定”。2.若要在Internet区域中禁用JScript执行,请 在注册表编辑器中找到以下注册表子项:HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Internet Settings\Zones\3\140D要在“受限制的站点”区域中禁用JScript执行 ,请在以下位置找到以下注册表子项:注册表编辑器:HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Internet Settings\Zones\4\140D3.用鼠标右键单击适当的注册表子项,然后单击 修改”。4.在“ 编辑DWORD(32位)”值中 对话框中,键入 3。5.单击“ 确定”,然后重新启动Internet Explorer。关于如何看待微软在IE浏览器中增加了禁用JavaScript选项就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。...
小编给大家分享一下ThinkPHP中SwaggerV3扩展包有什么用,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!源码:https://github.com/liaoshengping/think-swagger安装:composer require liaosp/think-swagger -vvv创建包我在tp的根目录下创建pkgmkdir pkg cd pkgpackage-builder build think-swagger添加 zircote/swagger-php,在composer.json 添加添加swagger "require": { "zircote/swagger-php": "^3.2" },根据 官网的示例,我们希望在TP触发如下代码<?phprequire("vendor/autoload.php"); $openapi = \OpenApi\Generator::scan(['/path/to/project']); header('Content-Type: application/x-yaml');echo $openapi->toYaml();本地导入composer需要在tp的compsoer 加入 “minimum-stability”: “dev” "minimum-stability": "dev"repositories 加入 { "type": "path", "url": "pkg\\think-swagger" }创建控制器在src 创建 一个Controller.php一个是展示 html 的,一个是提供swagger api 接口的具体代码可查阅:https://github.com/liaoshengping/think-swagger/blob/master/src/Controller.php添加路由 "autoload": { "psr-4": { "Liaosp\\ThinkSwagger\\": "src" }, "files": [ "src/route.php" ] },添加router.phptp5 我现在的版本可以这样做,但是TP6我试了下,不行啊报错;如果后面有Tp6项目了,我会把tp6部分整合一下欢迎大家收藏。Route::any('apidoc', '\\Liaosp\\ThinkSwagger\\Controller@apidoc'); Route::any('apidocJson', '\\Liaosp\\ThinkSwagger\\Controller@apidocJson');添加Swagger-uiswagger ui 是 开源的 js库 github.com/swagger-api/swagger-ui静态形式引用 dist/index.html静态资源导入Swagger 主要需要这三个文件 '/swagger/swagger-ui.css', '/swagger/swagger-ui-bundle.js', '/swagger/swagger-ui-standalone-preset.js'tp5没有publish ,所以我想了一个办法,通过查询是否存在资源,进行资源的发布。感兴趣的可以看下上面提供的源码一些感想可能我的思维Laravel化了,在开发之前我认为一些 本应该有的扩展功能都应该有的,但是我查阅了好几个作者的think-swagger扩展包,不太灵活了。以至于有一些开发扩展包的同学,需要手动改源码,或者干脆就没有composer 包,直接写教程如何去实现。接着我查阅了下Tp6的源码,在开发扩展方面有一定的增强,比如下面的是我学Tp6 的官方的插件:Laravel 的包的提供者的命名官方的是在包名加 Provider我查阅了下tp的扩展包,习惯于用Service 作为包的提供者 "extra": { "think": { "services": [ "Liaosp\\ThinkSwagger\\Service" ] } }不过Laravel 之前也需要手动添加Provider,希望国产Tp越来越好,目前我测试了下这个包可以在Tp5运行,tp6不行。后面再看看有没有接触TP6项目再把这个包升级一下吧。以上是“ThinkPHP中SwaggerV3扩展包有什么用”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注辰迅云资讯频道!...
这篇文章主要为大家展示了“HTML5与HTML4有什么区别”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“HTML5与HTML4有什么区别”这篇文章吧。1.HTML5标准还在制定中首先要注意的是,HTML5虽然现在很火,但是HTML5标准还在制定中,标准仍在改变。HTML4已经10多年了,不会有任何改变了。2.简化的语法HTML5简化了很多细微的语法,例如doctype的声明,你只需要写<!doctype html>就行了。HTML5与HTML5,XHTML1兼容,但是与SGML不兼容。3.<canvas>标签替代FlashFlash给很多Web开发者带来了麻烦,要在网页上播放Flash需要一堆代码和插件。<canvas>标签使得开发者只要使用一个标签就能和用户产生UI交互。虽然目前<canvas>标签还不能实现Flash的所有功能,但是很快<canvas>就会让Flash看起来老土,哈哈!4.新增<header>和<footer>标签HTML5设计的一个原则是更好的体现网站的语义性,所以增加了<header>和<footer>这样的标签,用来明确表示网页的结构。5.新增<section>和<article>标签与<header>,<footer>类似,<section>和<article>也有利于清晰化网页的结构,更有利于SEO。6.新增<menu>和<figure>标签<menu>可以被用于创建传统的菜单,也可以用于工具栏和上下文菜单。<figure>标签使得网页文字和图片的排版更专业。7.新增<audio>和<video>标签这两个标签可能是HTML5里面最有用的两个标签了。顾名思义,这两个标签是用来播放音频和视频的。8.全新的表单HTML5对<form>和<forminput>标签进行了大量修改,添加了很多新的属性,也修改了很多属性。9.删除<b>和<font>标签这个改进我还无法理解。我不认为删除这两个标签对代码的改进有很大的帮助。官方的解释是应该用CSS来替代这两个标签。但我还是觉得对于简单的文本,这两个标签还是很方便的。10.删除<frame>,<center>,<big>标签我已经记不得上次是什么时候使用这些标签了。以上是“HTML5与HTML4有什么区别”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注辰迅云资讯频道!...
小编给大家分享一下IIS服务器如何同时设置多个网站,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!预备工作首先我们需要确定自己的服务器上已经装好了IIS和网络服务,这两个组建在后面会用到。创建不同的网站目录及文件夹我这里用大家都熟悉的搜索引擎为例,要是这三家公司看到了别找我麻烦呀,我这里只是学习之用,没有诋毁你们公司的意思啊~~哈哈其中我在每个自己的搜索引擎下面新建了一个index.htm文件,分别对页面进行了百度、谷歌、必应的备注。方便我们测试的查看。配置IIS服务器接来下我们要开始配置IIS了,首先我们把这个问题变得简单一点,题目变为相同的IP,不同的端口访问不同的网站。这个对于一般的程序员应该没有多大问题。但是我还是写一下步骤,给初学者能够快速的入门吧~相同IP不同端口配置双击我们的iis服务器,在Internet信息服务(IIS)管理器左侧找到网站的文件夹,然后点击右击,新建->网站,在弹出来的网站创建向导中下一步,在网站描述中输入百度,下一步,网站的IP地址,选择网卡的IP地址,我这里是192.168.1.1,端口默认还是80,下一步,路径选择我们刚刚新建百度的文件夹下面,下一步,先勾选读取,运行脚本这两个先把,下一步,就可以看到完成创建网站向导了。我们先来测试一下我们的刚刚建好的"百度"网站吧。。。成功了!接着我们和上面的方法差不多,除了把端口号改调之外,别的都相同,我这里把百度设置为80(国产支持一下),必应为82端口,谷歌为81端口。离我们的答案近了一步了哈哈接着我们把问题在放大一点,就是不同的IP相同的端口访问不同的网站。不同的IP相同的端口配置首先我们需要在网卡上配置不同的IP地址,我们一开始已经添加了192.168.1.1,那我们把这个IP(192.168.1.1)分配给"百度"网站吧,接下来我们再新建一个192.168.1.100分配给"谷歌",新建一个192.168.1.200分配给"必应"。看操作,网上邻居->右击->属性->本地连接->右击->属性,在常规的选项中找到Internet协议(TCP/IP),双击,在Internet协议(TCP/IP)属性中选择高级,在高级TCP/IP设置中,IP地址中添加192.168.1.100,和192.168.1.200,接着就是一路确定了。IP设置好了,接下来我们需要在修改网站的IP和端口好了。我想很多朋友这里不需要看了,应该自己也会配了。但是不会的朋友可以继续往下看...再次双击我们的IIS信息服务,这里需要说明一下,我们原来的自己的"百度"网站是192.168.1.1端口是80,那他是不需要修改的,所以我们只需要在网站中修改谷歌和必应就好了,还是看操作吧...找到谷歌的网站,右击属性,在弹出来的窗口中直接修改IP地址和端口号。然后确定。必应也是同理。。。接下来我们在次测试一下我们的配置把。。。相同的IP相同的端口显示不同的网站绕了这么多,接下来我们回到这个题目,相同的IP,相同的端口配置不同的网站,需要配合DNS和IIS网站中的主机头。还是看操作吧,首先我们还是确定已经安装了DNS服务器,在开始->管理工具->DNS,打开。打开DNS后,在DNS->WINDOWS2003->正向查找区域,右击新建区域,弹出新建区域向导对话框,下一步,默认下一步,区域名称中,输入网址,比如百度的话是baidu.com,下一步,默认下一步,不允许动态更新,下一步,完成了向导。这个时候我们发现在正向查找区域有了baidu.com了,好了,接下来我们再在baidu.com文件上右击,选择新建主机。在新建主机中添加名称为:www,IP地址为192.168.1.1然后选择添加主机。此时右边可以看到多一个A记录了。刚刚我们新建了一个百度的DNS指向,同理我们再新建谷歌和必应的。DNS配置好了,其实很简单吧。。。接下来我们再次回到我们的IIS信息服务管理器,找到我们的百度,网站,右击属性。IP地址还是192.168.1.1,端口还是80,然后点击高级,选中192.168.1.1,然后选择编辑,在主机头值中输入www.baidu.com.剩下的是一路确定了。。其余两个也是相同的配置。这里就不详细说了。最后我们还是要来测试一下,这里需要把测试的服务器的DNS设置成服务器的IP地址,我这里是是192.168.1.1,最好看一下成功的画面把……以上是“IIS服务器如何同时设置多个网站”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注辰迅云资讯频道!...
小编给大家分享一下js插件Swiper有什么用,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!Swiper(Swiper master)是目前应用较广泛的移动端网页触摸内容滑动js插件,可以用来做轮播和滑动.初始化<!DOCTYPE html><html> <head> <meta charset="UTF-8"> <title></title> <link rel="stylesheet" type="text/css" href="swiper.css?1.1.11"/> <style> .swiper-container { width: 600px; height: 300px; } .swiper-slide{ font-size: 50px } .swiper-slide:nth-of-type(1){ background-color: cornflowerblue; } .swiper-slide:nth-of-type(2){ background-color: coral; } .swiper-slide:nth-of-type(3){ background-color: yellowgreen; } </style> </head> <body> <div class="swiper-container"> <div class="swiper-wrapper"> <div class="swiper-slide">Slide 1</div> <div class="swiper-slide">Slide 2</div> <div class="swiper-slide">Slide 3</div> </div> <!-- 如果需要分页器 --> <div class="swiper-pagination"></div> <!-- 如果需要导航按钮 --> <div class="swiper-button-prev"></div> <div class="swiper-button-next"></div> <!-- 如果需要滚动条 --> <div class="swiper-scrollbar"></div> </div> <!--导航等组件可以放在container之外--> <script src="swiper.js?1.1.11"></script> <script> var mySwiper = new Swiper ('.swiper-container', { direction: 'vertical',// loop: true,// // // 如果需要分页器 pagination: '.swiper-pagination',// // // 如果需要前进后退按钮 nextButton: '.swiper-button-next', prevButton: '.swiper-button-prev',// // // 如果需要滚动条 scrollbar: '.swiper-scrollbar', })</script> </body></html>基本配置var mySwiper = new Swiper ('.swiper-container', { // 滑动方向 // horizontal水平 // vertical垂直 direction: 'horizontal', // 初始化时候slide的索引(从0开始) initialSlide: 1, // 手指松开至slide贴合的时间 speed:3000, // 设置自动播放的事件间隔 autoplay: 2000, // 可显示数量 slidesPerView:2, // 滑块居中 centeredSlides:true, })触摸设置 var mySwiper = new Swiper ('.swiper-container', { direction: 'horizontal', // 触摸距离与slide滑动距离的比率 touchRatio:0.1, // 无法滑动 onlyExternal:true, // 滑块跟随手指进行移动 followFinger:false, // 定义longSwipesMs longSwipesMs:1000, longSwipes:false, shortSwipes:false, longSwipesRatio:0.5, touchAngle:10, }) 禁止切换和前进后退 <body> <div class="swiper-container"> <div class="swiper-wrapper"> <div class="swiper-slide stop">Slide 1</div> <!--<div class="swiper-slide swiper-no-swiping">Slide 2</div>--> <div class="swiper-slide">Slide 2</div> <div class="swiper-slide">Slide 3</div> </div> </div> <button class="prev">prev</button> <button class="next">next</button> <script src="swiper.js?1.1.11"></script> <script> var mySwiper = new Swiper ('.swiper-container', { direction: 'horizontal', noSwiping:true, noSwipingClass : "stop", nextButton : ".next", prevButton : ".prev", }) </script>分页器 <style> .swiper-container { width: 600px; height: 300px; } .swiper-slide{ font-size: 50px } .swiper-slide:nth-of-type(1){ background-color: cornflowerblue; } .swiper-slide:nth-of-type(2){ background-color: coral; } .swiper-slide:nth-of-type(3){ background-color: yellowgreen; } .swiper-pagination-bullet{ width: 20px; height: 20px; } .swiper-pagination-bullet-active{ background-color: yellow; } </style> </head> <body> <div class="swiper-container"> <div class="swiper-wrapper"> <div class="swiper-slide">Slide 1</div> <div class="swiper-slide">Slide 2</div> <div class="swiper-slide">Slide 3</div> </div> <div class="swiper-pagination"></div> </div> <script src="swiper.js?1.1.11"></script> <script> var mySwiper = new Swiper ('.swiper-container', { direction: 'horizontal', pagination : ".swiper-pagination", paginationType : "bullets", paginationType : "fraction", paginationType : "progress", paginationClickable : true, paginationHide : true, paginationElement : "i", paginationBulletRender : function( swiper,index,classname ){ return "<span class='"+ classname +"'>"+ (index+1) +"</span>" } })</script> </body>切换效果 <script> var mySwiper = new Swiper ('.swiper-container', { direction: 'horizontal', effect : "slide", effect : "fade", effect : "cube", effect : "coverflow", effect : "flip", })</script>进程<body> <div class="swiper-container"> <div class="swiper-wrapper"> <div class="swiper-slide">Slide 1</div> <div class="swiper-slide">Slide 2</div> <div class="swiper-slide">Slide 3</div> </div> </div> <button id="btn">按钮</button> <script src="swiper.js?1.1.11"></script> <script> var mySwiper = new Swiper ('.swiper-container', { direction: 'horizontal', }) btn.onclick = function(){ alert( mySwiper.progress ); alert( mySwiper.slides[0].progress ); console.log( mySwiper.slides[0].progress,mySwiper.slides[1].progress,mySwiper.slides[2].progress ); } setInterval(function(){ console.log( mySwiper.slides[0].progress,mySwiper.slides[1].progress,mySwiper.slides[2].progress ); },20)</script> </body>常用属性和回调<body> <div class="swiper-container"> <div class="swiper-wrapper"> <div class="swiper-slide">Slide 1</div> <div class="swiper-slide">Slide 2</div> <div class="swiper-slide">Slide 3</div> </div> </div> <button id="btn">按钮</button> <script src="swiper.js?1.1.11"></script> <script> var mySwiper = new Swiper ('.swiper-container', { direction: 'horizontal', speed : 2000, onSlideChangeStart : function(){ console.log( "开始滑动" ); }, onSlideChangeEnd : function(){ console.log( "滑动结束" ); } }) console.log( mySwiper.width ); console.log( mySwiper.height ); btn.onclick = function(){ console.log( mySwiper.translate ); console.log( mySwiper.activeIndex ); console.log( mySwiper.previousIndex ); } </script> </body>以上是“js插件Swiper有什么用”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注辰迅云资讯频道!...
这篇文章主要介绍Asp.Net中WebForm生命周期的概念分析,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!一.Asp.Net页面生命周期的概念当我们在浏览器地址栏中输入网址,回车查看页面时,这时会向服务器端IIS)发送一个request请求,服务器就会判断发送过来的请求页面,当完全识别 TTP页面处理程序类后,ASP.NET运行时将调用处理程序的 ProcessRequest 方法来处理请求、创建页面对象。通常情况下,无需更改此方法的实现,因为它是由 Page 类提供的。接下来被创建页面对象的ProcessRequest方法使页面经历了各个阶段:初始化、加载视图状态信息和回发数据、加载页面的用户代码以及执行回发服务器端事件。之后,页面进入显示模式:收集更新的视图状态,生成 HTML 代码并随后将代码发送到输出控制台。最后,卸载页面,并认为请求处理完毕。其中页面对象ProcessRequest方法 完成的这一系列事件的处理过程就是Asp.Net页面生命周期。二、为什么需要了解Asp.Net页面生命周期因为了解Asp.Net页面生命周期,可以帮助开发者在生命周期的合适阶段编写程序,以达到预期的效果,另外如果你想自己开发自定义控件,就必须熟悉页面的生命周期,以便正确进行控件的初始化,使用视图状态数据填充控件的属性,以及运行任何控件行为代码。也就是说只有熟悉了从创建到最后卸载等一系列的事件,开发起来才会顺心顺手,不会出现云里雾里的感觉。三、生命周期阶段1、请求页面:页请求发生在页生命周期开始之前。2、开始:在开始阶段,将设置页属性,如Request和Response。在此阶段,页还将确定请求是回发请求还是新请求,并设置IsPostBack属性。3、初始化页面:页面初始化期间,可以使用页中的控件,并将设置每个控件的UniqueID属性。如果当前请求是回发请求,则回发数据尚未加载,并且控件属性值尚未还原为视图状态中的值。4、加载页面:加载期间,如果当前请求是回发请求,则将使用从视图状态和控件状态恢复的信息加载控件属性。5、验证:在验证期间,将调用所有验证程序控件的Validate方法,此方法将设置各个验证程序控件和页的IsValid属性。6、回发事件处理:如果请求是回发请求,则将调用所有事件处理程序。7、呈现页面:在页面呈现期间,视图状态将被保存到页面,然后页面将调用每个控件,以将其呈现的输出提供给页的Response属性的OutputStream。8、卸载页面:完全呈现页、将页发送至客户端并准备丢弃时,将调用卸载。此时,将卸载页属性(如Response和Request)并执行清理。四、生命周期的事件1、PreInit使用该事件来执行下列操作:检查 IsPostBack 属性来确定是不是第一次处理该页。创建或重新创建动态控件。动态设置主控页。动态设置 Theme 属性。读取或设置配置文件属性值。注意:如果请求是回发请求,则控件的值尚未从视图状态还原。如果在此阶段设置控件属性,则其值可能会在下一事件中被重写。2、Init在所有控件都已初始化且已应用所有外观设置后引发。使用该事件来读取或初始化控件属性。3、InitComplete由 Page 对象引发。使用该事件来处理要求先完成所有初始化工作的任务。4、PreLoad如果需要在 Load 事件之前对页或控件执行处理,请使用该事件。在 Page 引发该事件后,它会为自身和所有控件加载视图状态,然后会处理 Request 实例包括的任何回发数据。5、LoadPage 在 Page 上调用 OnLoad 事件方法,然后以递归方式对每个子控件执行相同操作,如此循环往复,直到加载完本页和所有控件为止。使用 OnLoad 事件方法来设置控件中的属性并建立数据库连接6、控件事件使用这些事件来处理特定控件事件,如 Button 控件的 Click 事件或 TextBox 控件的 TextChanged 事件。注意:在回发请求中,如果页包含验证程序控件,请在执行任何处理之前检查 Page 和各个验证控件的 IsValid 属性。7、LoadComplete对需要加载页上的所有其他控件的任务使用该事件。8、PreRender在该事件发生前:Page 对象会针对每个控件和页EnsureChildControls。设置了 DataSourceID 属性的每个数据绑定控件会调用 DataBind 方法。有关更多信息,请参见下面的数据绑定控件的数据绑定事件。页上的每个控件都会发生 PreRender 事件。使用该事件对页或其控件的内容进行最后更改。9、SaveStateComplete在该事件发生前,已针对页和所有控件保存了 ViewState。将忽略此时对页或控件进行的任何更改。使用该事件执行满足以下条件的任务:要求已经保存了视图状态,但未对控件进行任何更改。10、Render这不是事件;在处理的这个阶段,Page 对象会在每个控件上调用此方法。所有 ASP.NET Web 服务器控件都有一个用于写出发送给浏览器的控件标记的 Render 方法。如果创建自定义控件,通常要重写此方法以输出控件的标记。不过,如果自定义控件只合并标准的 ASP.NET Web 服务器控件,不合并自定义标记,则不需要重写 Render 方法。有关更多信息,请参见开发自定义 ASP.NET 服务器控件。用户控件(.ascx 文件)自动合并呈现,因此不需要在代码中显式呈现该控件。11、Unload该事件首先针对每个控件发生,继而针对该页发生。在控件中,使用该事件对特定控件执行最后清理,如关闭控件特定数据库连接。对于页自身,使用该事件来执行最后清理工作,如:关闭打开的文件和数据库连接,或完成日志记录或其他请求特定任务。注意在卸载阶段,页及其控件已被呈现,因此无法对响应流做进一步更改。如果尝试调用方法(如 Response.Write 方法),则该页将引发异常。以上是“Asp.Net中WebForm生命周期的概念分析”这篇文章的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注辰迅云资讯频道!...
这篇文章将为大家详细讲解有关.net中什么是反射,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。反射是.net中非常有用的特性。什么是反射可以用一句话来概括就是:基于程序集和元数据,可以动态创建某个类型的实例,调用方法,和访问对象成员的一种能力。为什么要使用反射在编译时无法确定要调用的对象的时候,就不得不使用反射。反射的应用场景最常见的应用场景有:1,基于工厂模式实现的数据库切换。2,ORM框架,因为它要面对的是通用的模型,所有的属性或方法都是动态生成的。3,基于插件的系统,在完全不知道外部插件究竟是什么东西的情况下,是一定无法在编译期确定的,因此会使用反射进行加载。程序集由于反射是基于程序集和元数据的,所以有必要解释一下什么是程序集,什么时元数据。程序集:程序集是所有类型的集合,编译后生成PE文件(例如可执行文件.exe和类库文件.dll)。元数据:元数据是程序集中的一部分,主要包含了名称,版本,语言文化和公钥标记等信息。关于“.net中什么是反射”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。...