|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
对于中小型web应用来说,php有很强的竞争力,linux+apache+mysql+php(lamp)的组合几乎可以胜任绝大多数网站的解决方案,对于大型应用来讲,对于系统架构要求更高,需要有成熟的框架支持,jsp的struts是个不错的框架,国内介绍它的资料也非常多,应用逐渐广泛起来。asp就不用说了,asp.netASP.NET中的ViewState
ViewState是ASP.NET顶用来保留WEB控件回传时形态值一种机制。在WEB窗体(FORM)的设置为runat="server",这个窗体(FORM)会被附加一个埋没的属性_VIEWSTATE。_VIEWSTATE中寄存了一切控件在ViewState中的形态值。
ViewState是类Control中的一个域,其他一切控件经由过程承继Control来取得了ViewState功效。它的范例是system.Web.UI.StateBag,一个称号/值的工具汇合。
当哀求某个页面时,ASP.NET把一切控件的形态序列化成一个字符串,然后做为窗体的埋没属性送到客户端。当客户端把页面回传时,ASP.NET剖析回传的窗体属性,并赋给控件对应的值。固然这些全体是由ASP.NET卖力的,对用户来讲是通明的。
利用ViewState的前提
假如要利用ViewState,则在ASPX页面中必需有一个服务器端窗体标志(<formrunat=server>)。窗体字段是必须的,如许包括ViewState信息的埋没字段才干回传给服务器。并且,该窗体还必需是服务器真个窗体,如许在服务器上实行该页面时,ASP.NET页面框架才干增加埋没的字段。
Page的EnableViewState属性值为true。
控件的EnableViewState属性值为true。
页面自己将20字节摆布的信息保留在ViewState中,用于在回传时将PostBack数据和ViewState值分发给准确的控件。因而,即便该页面或使用程序禁用了ViewState,仍能够在ViewState中看到大批的残剩字节。
设置ViewState
ViewState能够在控件,页,程序,全局设置中设置。缺省情形下EnableViewState为true。假如要克制一切页面ViewState功效,能够在程序设置中把EnableViewState设为false。
在控件中:
<asp:DataGridEnableViewState="false"%>
或
DataGrid1.EnableViewState=false;
在页中:
<%@PageEnableViewState="false"%>
或
Page.EnableViewState=false;
在程序中:
在web.config中到场<pagesenableViewState="false"/>
在全局设置:
在machine.config中修正<pagesenableViewState="false"/>
EnableViewState优先级别:
全局设置<程序 <页<控件
注重:以下服务器控件不克不及克制ViewState
Textbox
Checkbox
CheckboxList
RadioButtonList
下面控件的形态经由过程IPostBackEventHandler和IPostBackDataHandler接口处置,而不是ViewState的机制,以是EnableViewState没无效果。
ViewState工具
在页面回传间通讯,ASP中一样平常使用窗体的属性和session来寄存数据,在ASP.NET中也能够利用ViewState工具来做一样的处置。
在ViewState寄存数据:
ViewState[key]=value;
或
ViewState.Add(key,value);
掏出数据:
TempStr=ViewState[key];
key不存在时前往空。
不克不及经由过程ViewState工具来会见控件的值。
静态创建控件的ViewState:
当必要静态地创建一个服务器控件,以下创建了一个RadioButton控件并到场到窗体控件汇合中:
RadioButtonrb=newRadioButton();
Page.Controls[1].Controls.Add(pc);
下面的代码增添一个控件到控件汇合末,一样也能够拔出到已有控件中的任何地位。
RadioButtonrb=newRadioButton();
Page.Controls[1].Controls.AddAt(1,pc);
一般,这些静态天生的控件的形态也必要天生到ViewState中往,但这个功效并没有完整完成,出格是天生的控件拔出到已有的控件中时。
当静态天生控件和已有控件并存时ViewState的了局是不成意料的。在页面回传时,起首非静态天生的控件在ASPX页中被天生,并在Page_Init
和Page_Load事务中读取ViewState。当页面的控件读取ViewState的值时,那些静态天生的控件却还没有被天生,以是当静态天生的控件被
天生时,页面就会省略失落ViewState大概以剩下也许毛病的ViewState来添补控件。
以是,当必要插一个静态天生的控件到已有控件中往时,最好把这个控件的ViewState经由过程EnableViewState克制失落。
提示:
1.当存在页面回传时,不必要保持控件的值就要把ViewState克制。
2.ViewState的索引是巨细写敏感的。
3.ViewState不是跨页面的。
4.为了能包存在ViewState中,工具必需是可流化大概界说了TypeConverter。
5.控件TextBox的TextMode属性设置为Password时,它的形态将不会被保留在ViewState中,这应当是出于平安性的思索。
6.在页面没有回传 或 重定向 或 在回传直达到(transfer)其他页面时不要利用ViewState。
7.在静态创建控件时要当心它的ViewState。
8.当克制一个程序的ViewState时,这个程序的一切页面的ViewState也被克制了。
9.只要当页面回传本身时ViewState才是延续的。
</p>专业性的服务。有的ASP商提供垂直型的应用服务,针对某一特定行业提供应用服务。 |
|