|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
在经过全球个人PC市场占有90%的微软对asp.net不断优化与整合后,asp.net与微软自身平台的动用上更加的高效,加上asp.net在应用上非常容易上手,相信asp.net仍会是最多客户选用的脚本语言,并会在未来几年继续领跑。ado|asp.net 偶尔在一个老外的blog里看到有如许的形貌,当textbox控件里被设置为readonly时,并且页面的enableviewsate设置为false时,提交后,textbox的值会丧失,这只产生在asp.net2.0中,在asp.net1.0/1.1中不会呈现如许的情形,代码以下:
<%@PageLanguage="C#"AutoEventWireup="true"CodeFile="Default.aspx.cs"EnableViewState="false"Inherits="_Default"%>
<!DOCTYPEhtmlPUBLIC"-//W3C//DTDXHTML1.0Transitional//EN""http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<scriptrunat="server">
protectedvoidPage_Load(objectsender,EventArgse)
{
if(!this.IsPostBack)
{
this.Textbox1.Text="readonlytext";
}
}
protectedvoidButton1_Click(objectsender,EventArgse)
{
this.lblMessage.Text=this.Textbox1.Text;
}
</script>
<htmlxmlns="http://www.w3.org/1999/xhtml">
<headrunat="server">
<title>UntitledPage</title>
</head>
<body>
<formrunat="server"id="Form1">
<asp:textboxID="Textbox1"runat="server"ReadOnly="true"ForeColor="silver"></asp:textbox>
<asp:textboxID="Textbox2"runat="server"ReadOnly="true">SomeText</asp:textbox>
<asp:ButtonID="Button1"runat="server"Text="Button"/><br/>
<asp:LabelID="lblMessage"runat="server"Text="Label"></asp:Label>
</form>
</body>
</html>
在.net2.0下运转,切实其实会丧失了文本框的值。最初,找到了MSDN的剖析和微软的BUG反应中央,实在这不是BUG,是.net2.0下为了平安的一个小改动,详细摘录以下,人人就分明了:
微软的反应为:
Aftercarefulanalysis,theexplanationfortheobservedbehaviouristhat:
WithadesignchangeinASP.NETbasedonusersecurityconcern,theinputforareadonlytextboxissavedinviewstate,whichdoesnthappenifviewstateisdisabled.Toworkaroundthis,apagedevelopercanaddthereadonlyattributetotheTextBox.Attributescollection,whichcanthenbeusedtoaccessthevalueofthetextbox.
Wehopethisclarifies.Thankyou.
WebServer&Tools
MSDN2005的剖析:
TheTextvalueofaTextBoxcontrolwiththeReadOnlypropertysettotrueissenttotheserverwhenapostbackoccurs,buttheserverdoesnoprocessingforaread-onlytextbox.ThispreventsamalicioususerfromchangingaTextvaluethatisread-only.ThevalueoftheTextpropertyispreservedintheviewstatebetweenpostbacksunlessmodifiedbyserver-sidecode.
一个很大的类库。应用程序之所以难以跨平台,在于直接调用了特定平台的接口,而一个巨大的类库,就能极大地减少应用程序对平台的依赖。 |
|