ASP.NET网页编程之asp.net 2.0里当readonly赶上enablevie...
在经过全球个人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.
一个很大的类库。应用程序之所以难以跨平台,在于直接调用了特定平台的接口,而一个巨大的类库,就能极大地减少应用程序对平台的依赖。 ASP(ActiveServerPages)是Microsfot公司1996年11月推出的WEB应用程序开发技术,它既不是一种程序语言,也不是一种开发工具,而是一种技术框架,不须使用微软的产品就能编写它的代码。 这也就是最近几年来随着各种新的后台技术的诞生,CGI应用在Internet上越来越少的原因。CGI方式不适合大访问量的应用。 代码逻辑混乱,难于管理:由于ASP是脚本语言混合html编程,所以你很难看清代码的逻辑关系,并且随着程序的复杂性增加,使得代码的管理十分困难,甚至超出一个程序员所能达到的管理能力,从而造成出错或这样那样的问题。 最强的技术支持WebService,而且有.NET的所有library做后盾。而且ASP.NET在.NET3.5中还有微软专门为AJAX开发的功能--ASP.NETAJAX。 主流网站开发语言之ASP:ASP是微软(Microsoft)所开发的一种后台脚本语言,它的语法和VisualBASIC类似,可以像SSI(ServerSideInclude)那样把后台脚本代码内嵌到HTML页面中。虽然ASP简单易用,但是它自身存在着许多缺陷,最重要的就是安全性问题。 主流网站开发语言之JSP:JSP和Servlet要放在一起讲,是因为它们都是Sun公司的J2EE(Java2platformEnterpriseEdition)应用体系中的一部分。 JSP/Servlet虽然在国内目前的应用并不广泛,但是其前途不可限量。 在调试JSP代码时,如果程序出错,JSP服务器会返回出错信息,并在浏览器中显示。这时,由于JSP是先被转换成Servlet后再运行的,所以,浏览器中所显示的代码出错的行数并不是JSP源代码的行数。
页:
[1]