它可以利用十分易用的模型在Web服务器上动态生成HTML,并且很容易的实现了对数据库的访问,就当时来说,这是一项多么吸引人的技术,包括现在Internet上的许多web站点都是用Asp写的,我的同事前辈们更是玩...他的编程模型是基于事件的,使用他更像是在进行Windows窗体编程,这一点也正是我决定去学习使用他的一个重要原因,也胡乱看了一些这方面的书,写这篇文章的目的也就是和各位Asp.net初学者和还没有为用户控件添加过自定义事件的同行分享一下经验...目的就是改变或者获取当前控件的显示。 接下去就是定义控件事件触发函数OnLogInOutClick,由按钮单击事件处理函数来完成对用户控件事件的触发。...总结,用户控件为程序员带来了很高的开发效率和重用性,更是在性能方面有了很大的提高,以前称为Asp+,其实我认为Asp.net跟Asp没有什么直接联系。...而且我想做应用程序的朋友和我一样在开发Web程序时更喜欢采用代码分离方式,这样结构更清晰,便与修改和管理。
您可以看到许多苦闷的使用者在 ASP.NET 新闻组和论坛就这些错误提出问题。遵循本文概述的相当简单的步骤,可以帮助您避免这些错误,并节约大量的开发时间。...即使需要对 HTML 输出进行特殊的控制,您也可以在用户界面上记录集的内容重复出现的情况下,使用某个数据 Web 控件。...运行时不必要地在 Datagrid 中动态创建 Datagrid 控件或列 在某些业务和技术方案中,在运行时创建 ASP.NET 控件是必要的,也是完全合适的。...如果遇到这些情况,请注意,提交页面时不要保留这些动态控件。必须在页面生命周期的早期,在每次回发时重新创建动态控件(例如在 Page_Init 事件中)。警言:创建控件要早,创建控件要勤。...但如果禁用 ViewState,该步骤是必需的,这样在执行 Page_Load 后可以正确地引发其他 Datagrid 事件。
在各个回发之间保存值,而不将这些值存储在会话状态或用户配置文件中,将信息存储在视图状态中,这样在下次将该页发送到服务器时,代码便可以在页加载事件过程中访问这些信息。...所谓回发:就是由服务器控件导致的页面刷新。 ASP.NET 页框架使用视图状态在往返过程之间保存页和控件值。...每次从服务器请求页时,都会创建网页类的一个新实例。这通常意味着在每次往返过程中会丢失该页及其控件中的所有信息。...比如:我有一个DropDownList控件,然后我点击了某个Button控件,在Button对应的click事件下修改了DropDownList的默认选项,这时候,ViewState中就会记录DropDownList...总结:ViewState由于数据存放在客户端,肯定会减少服务器的压力,但是,如果ViewState的数据量过大,肯定是会影响页面的加载速度和性能的。
net宿主的概念,ISAPI的概念,ASP.NET基本运行机制; .net宿主的概念:CLR被实现为一个标准的COM服务器组件,CLR具有标准的COM接口和接口GUID,在安装.net时CLR作为一个...触发事件:ChangedEvents, PostbackEvent.这里首先会比较ViewState中数据和页面上一次回传的数据,决定哪一些事件需要被触发,这里的事件是被逐一触发的,但顺序无法确定。...ViewState的类型是System.Web.UI.StateBag,它是存储名称/值对的字典;可以使用户在使用动态页面时获得连续性动作的功能;(就是说ViewState并不是存储在服务器中,而是通过不断的在服务器和客户端之间传送...); asp.net中有些控件本身实现类保存数据的功能,而不依靠ViewState.例如TextBox,即使ViewState关闭,数据也不会丢失;ViewState可以保存任何可序列化的对象,而不仅仅限于控件的状态数据...Session:一个数据字典,用于在会话中维持状态数据,从理论上来说,同一个会话过程中,Session数据是不会丢失的(关闭浏览器或主动结束会 话).用户认证(authentication)后--输入用户名密码
1.基本概念:所谓的页面生命周期,指的是一个ASP.NET页面类对象从初始化到销毁经过的步凑过程; 2.大致步凑: (1)初始化:PreInit,Init,InitComplete (2)加载数据和页面..._requestValueCollection);):触发控件事件 } ->SaveStateComplete-OnSaveStateComplete(EventArgs.Empty):保存页面和控件数据到...应用程序按照以下顺序执行由 global.asax 文件中定义的模块或用户代码处理的事件: 1.BeginRequest 开始处理请求(在 ASP.NET 响应请求时作为 HTTP 执行管线链中的第一个事件发生...3.PostAuthenticateRequest 获取成功 (注意:该事件在 .NET Framework 2.0 版中是新增的。 当安全模块已建立用户标识时发生。...7.PostResolveRequestCache 已获取缓存(在 ASP.NET 跳过当前事件处理程序的执行并允许缓存模块满足来自缓存的请求时发生。)
PreLoad - 如果在页面或者控件进入Load事件前你有什么要处理的,使用这个事件。...Page在触发这个事件后,Page就会为自己和所有的控件加载view state并且处理所有Request中的postback数据。 3. Load 这个阶段可能是开发者使用得最多的一个阶段。...在这个事件的最后,页面和所有控件的 ViewState被存储。...编写用户自定义控件的开发者对这个阶段最感兴趣了,因为输出用户自定义HTML代码的标准做法就是重写Render方法。...如果你的控件是从ASP.NET服务器端控件继承来的,你也许不需要重写Render方法,除非你想呈现一个与用户控件默认行为不同的行为。
10.页面加载(OnLoad==Page_Load):我想大家都十分熟悉这个事件了,这里我们可以随心所欲地操作aspx文件上声明的控件了,但除了在该事件中实例化的服务器控件。...如果IsPostBack为True,因为此时实例化的控件没有参与步骤8到9,所以当该控件加入到页面控件树时就会进入步骤8,执行完继续执行Page_Load的其余代码,但这些控件还没获得回传值; 注意点...SaveViewState中保存到ViewState中(当然我们可以重写的时候让IsTrackingViewState永远返回false,那么控件的数据就无法保存到ViewState了)。...,当然也可以在第18步中设置;在该方法执行前会先执行页面和控件的EnsureChildControl方法和执行设置了DataSourceID属性的控件的DataBind事件。...如果设置了ViewState分块保存的话,会将ViewState分块保存在多个隐藏控件中。如下 如果隐藏域中的数据量过大,某些代理和防火墙将阻止对包含这些数据的页的访问。
下面是从MSDN中摘录的一段描述和一个页面生命周期方法和事件触发的顺序表: “每次请求 ASP.NET 页时,服务器就会加载一个 ASP.NET 页,并在请求完成时卸载该页。...请参阅处理继承的事件。 Init 事件(OnInit 方法) 加载视图状态 在此阶段结束时,就会自动填充控件的 ViewState 属性,详见维护控件中的状态中的介绍。...可以保存在预呈现阶段对控件状态所做的更改,而在呈现阶段所对的更改则会丢失。请参阅处理继承的事件。...(它是页面和用户控件的基类)中定义了一个“FrameworkInitialize”虚拟方法,然后在Page的ProcessRequest中最先调用了这个方法,在生成器生成的ASPX的源代码中我们发现了这个方法的踪影...我们简单的介绍了页面的生存周期,对于服务器端事件的处理做了不太深入的讲解,今天主要是想大家了解页面执行的周期,对于服务器控件的事件和生存期我会在后续在写一些文章来探讨。
当我们进入这个事件之旅时,我们也会试着明白在请求处理的每个事件当中我们可以做什么业务逻辑处理操作。 二、大体上的两步处理流程 大体上,ASP.NET请求的处理流程分为如下图所示的两个步凑。...每一个ASP.NET页都有2个部分:一个是在浏览器中进行显示的部分,它包含了HTML标签、viewstate形式的隐藏域 以及 在HTML input中的数据。...当这个页面被提交到服务器时,这些HTML标签会被创建到ASP.NET控件,并且viewstate还会和表单数据绑定在一起。...顺序 事件名称 控件初始化 ViewState可用 表单数据可用 什么逻辑可以写在这里?...在这部分中我们没有获得viewstate、提交的数据值及已经初始化的控件。
在Asp.Net中,有一个应用程序池,其中保存了数个(或数十个)应用程序实例,每一次请求都会从池中取一个实例来处理请求,在请求完毕之前,这个实例不会接受其他请求;这就出现一个问题,同一时间可能存在多个应用程序...,里面包含了一个服务器端的按钮和一个CheckBox,然后我们在服务器端响应按钮的事件: private void btnPostBack_Click(object sender, System.EventArgs...,父类并不关心子类如何保存,我们只要在Save和Load的时候使用同样的方式,并且把正确的数据传递给父类方法就可以了。 ...,那么控件树的结构就会丢失,那么Load的时候就没办法还原了,实际上在SaveViewStateRecursive方法中大致的代码是这样: [1] 获取控件自己的ViewState(调用SaveViewState...差不多,只是Load的时候会从savedState中获取子控件的索引来依次递归子控件的LoadRecursive()方法,这样才能保证正确的把保存的数据传给子控件。
还有就是可以通过OnInit()来重载初试化事件 (2) LoadViewState---导入Viewstate数据 在初试化事件后,在loadvireState事件中所有控件将获得他们的第一个属性ViewState...(4) Page_Load();---导入对象 这个过程就比较熟悉了,也是在页面的每次载入时一定会执行,但是注意和PageInit()之间的区别,所有的对象第一次被布置在DOM页面(在Asp.net中称控件树...,因为此时已经脱离了数据库调用以及viewstate更新了,也可以通过OnPreRender来重载。...(7) Page_Render();---呈递对象呈递页面 所有对页面控件的修改完成后viewstate就被保存了。运用Html创建给浏览器输出的页面的时候Render事件就发生了。...在Render事件过程中,页面调用其中的对象将它们呈递给Html。然后,页面就可以以Html的形式被用户的浏览器访问了。
每一个ASP.NET Page页都有2个部分:一个部分是在浏览器中进行显示的部分,它包含了HTML标签、viewstate形式的隐藏域 以及 在HTML input中的数据。...当这个页面被提交到服务器时,这些HTML标签会被创建到ASP.NET控件,并且viewstate还会和表单数据绑定在一起。...二、ASP.Net Page的页面事件流程 顺序 事件名称 控件初始化 ViewState可用 表单数据可用 什么逻辑可以写在这里?...③页面生命周期的入口:Page类的ProcessRequest方法 从上一篇请求处理管道中,我们知道在第11和第12个事件之间会调用Page类对象的ProcessRequest方法进入页面生命周期。...在控件中,使用该事件对特定控件执行最后清理,如关闭控件特定数据库连接。对于页自身,使用该事件来执行最后清理工作,如:关闭打开的文件和数据库连接,或完成日志记录或其他请求特定任务。
,保存在Application中的数据是全局有效的;在Asp.Net中,有一个应用程序池,其中保存了数个(或数十个)应用程序实例,每一次请求都会从池中取一个实例来处理请求,在请求完毕之前,这个实例不会接受其他请求...,里面包含了一个服务器端的按钮和一个CheckBox,然后我们在服务器端响应按钮的事件: private void btnPostBack_Click(object sender, System.EventArgs...,父类并不关心子类如何保存,我们只要在Save和Load的时候使用同样的方式,并且把正确的数据传递给父类方法就可以了。...,那么控件树的结构就会丢失,那么Load的时候就没办法还原了,实际上在SaveViewStateRecursive方法中大致的代码是这样: [1] 获取控件自己的ViewState(调用SaveViewState...的时候会从savedState中获取子控件的索引来依次递归子控件的LoadRecursive()方法,这样才能保证正确的把保存的数据传给子控件。
注意这五个数据容器的正确使用方法发生了改变,因此有经验的程序员在考虑这些熟悉的对象时也许需要学习一些知识。...但是在ASP.NET中这种技术不太适合了,因为只要你使用postback模型(也就是页面发回给自己),Web控件和ViewState自动处理了这些操作。...它提供了难以置信的灵活性、通用性和性能,因此在ASP.NET应用程序中它通常是比Application或Sessions更好的保持数据的对象。...ViewState是ASP.NET中的一个新容器,也许你已经使用它了,但是你可能还是不了解它。这是因为所有的内建Web控件都使用ViewState在页面回发(postback)间保持自己的值。...确定某个页面上每个控件使用的ViewState的数量最简单的方法是打开页面追踪并检查每个控件负载了多少个ViewState。
4.关闭表格中服务器控件的ViewState(大部分控件用于显示,每次回传都重新生成一次,启用ViewState太多余了),关闭后大大减小了页面体积; 5.压缩该页面的ViewState并后置。...,将ViewState后置就可以尽快让浏览器加载解释可视化元素,但后置的前提是ViewState不大,否则页面貌似呈现完成,而因ViewState过大而实际仍然加载解释,此时用户点击某个服务器控件就悲催了...现在想起来其实可以把只传递判断使用什么html标签的标识符和具体的内容数据,然后用js生成表格的结构,而因为这个操作的js文件比较大就可以在前一个页面进行预加载,当进入该页面时就可以直接读cache了。...点击每行的修改按钮时弹出一个div,异步取数据,修改完后发送异步请求保存数据并用js修改该行的新值;点击删除按钮时,异步发送请求给服务器删除记录,然后用js修改当前行的所有td为空白并在行内首个td中标明...客户基本满意,那这部分就算是交差了,(*^__^*) 嘻嘻…… 2.一键关闭web系统所有页面,不断尝试,却被奇怪的方法Kill了 需求:在OA系统首页有一个“关闭系统”按钮可以关闭该系统的所有页面
服务端会根据接收到的控件的name属性的这个key来得知是这个按钮被点击了,从而在服务端触发这个按钮的点击事件。 二. ...HtmlControls 中的 Type为button的HtmlInputButton 和其它所有的控件事件,比如LinkButton点击,TextBox的Change事件等等: 这些事件在客户端产生后会经过一个统一的机制发送到服务端...首先asp.net页框架会使用两个Hidden域来存放表示是哪个控件触发的事件,以及事件的参数: 2....,然后提交Form,在服务端根据__EVENTTARGET和__EVENTARGUMENT来判断是哪个控件的什么事件触发了。
ASP.Net MVC 数据处理 七天学会ASP.NET MVC (四)——用户授权认证问题 七天学会ASP.NET MVC (五)——Layout页面使用和用户角色管理 七天学会ASP.NET MVC...场景2 有一种常见的情况,服务器端发送的请求是HTML请求。HTML请求是由一组输入控件和提交按钮组成的。 当用户点击“Save”按钮之后会发生什么?...在Web编程中是没有事件的概念的,Asp.net Web forms 根据我们的行为自动添加了处理代码,所以给我们带来的错觉认为是事件驱动的编程。这只是一种抽象的描述。...HTML有图像,文本,输入控件等。通常称为用户界面的设计即UI层,在ASP.net MVC称为View。...创建 ViewResult 对象将会渲染成视图来给用户反馈 ViewResult 创建了ViewPageActivator 对象 ViewResult 选择了正确的ViewEngine,并且会给ViewEngine
基于Http协议的无状态特性,我们在ASP.Net的开发中也会经常碰到这种情况:用户上一次提交的东西,下次再提交时服务器就不记得了。很多时候,我们感到很不解?...而伟大的Microsoft还在ASP.Net中帮我们封装了ViewState,以至于我们在WebForm中进行PostBack操作时,都感觉不到服务器是无状态的。...①首先,如果页面上有一个runat="server"的form,当用户请求这个页面时,服务器会自动添加一个_ViewState的隐藏域返回给浏览器。...这是因为服务器在向浏览器返回html之前,对ViewState中的内容进行了Base64的加密编码; ②其次,当用户点击页面中的某个按钮提交表单时,浏览器会将这个_VIEWSTATE的隐藏域也一起提交到服务端...事实上,除了我们手动在服务器端向ViewState属性中添加的K/V对数据,我们在aspx.cs代码中为某些服务器控件设置的值(例如:为Repeater设置DataSource中存入的数据集、为Label
ASP.NET: ASP.NET 引入了事件驱动模型和控件生命周期管理,开发人员可以更容易地处理页面生命周期事件,实现复杂的页面逻辑。...5、ViewState概念: ViewState 是 ASP.NET 页面用于在客户端保持页面状态的机制,以便在 postback 时恢复页面上的控件状态。...用途: 用于存储页面上控件的状态信息,避免在 postback 时丢失用户输入或操作。区别: 存储在页面中,通过隐藏字段传输。...Cookie 用于在客户端保持状态信息。ViewState 用于在 postback 时保持页面上控件的状态。...它的目的是允许页面在 PostBack(例如,按钮点击后的页面重新加载)时保留控件的状态,以便它们可以正确地还原到之前的状态。
1:不要使用不必要的session 和ASP中一样,在不必要的时候不要使用Session。...2:不使用不必要的Server Control ASP.net中,大量的服务器端控件方便了程序开发,但也可能带来性能的损失,因为用户每操作一次服务器端控件,就产生一次与服务器端的往返过程。...例如,如果第一个用户查询的是北京的天气,则缓冲中存储了北京市的天气。...当第二个用户查询上海的天气时,为避免读取到错误的缓冲,可以用这样的代码缓冲多个城市的天气: 这就指明了根据页面URL中的cityName参数来缓冲多份数据。...n 片断缓冲 在ASP.net中,除了在页面范围内使用缓冲,也还可以针对User Control使用Output Cache参数实现对用户控件的缓冲。
领取专属 10元无门槛券
手把手带您无忧上云