คุณอาจจะบันทึกจำนวนมากของการเข้ารหัสโดยการรักษา ViewState ของวัตถุในรูปแบบเว็บของคุณ
การดูแลรักษา ViewState
เมื่อส่งแบบฟอร์มใน ASP คลาสสิกค่ารูปแบบทั้งหมดจะถูกลบ สมมติว่าคุณได้ส่งแบบฟอร์มที่มีข้อมูลจำนวนมากและเซิร์ฟเวอร์กลับมาพร้อมกับข้อผิดพลาด คุณจะต้องกลับไปที่รูปแบบและแก้ไขข้อมูล คุณคลิกปุ่มย้อนกลับและสิ่งที่เกิดขึ้น ....... ค่ารูปแบบทั้งหมดจะถูกลบและคุณจะต้องเริ่มต้นอีกครั้ง! เว็บไซต์ที่ไม่ได้รักษา ViewState ของคุณ
เมื่อส่งแบบฟอร์มใน ASP .NET, รูปแบบโผล่เข้ามาในหน้าต่างเบราว์เซอร์ร่วมกับค่าทุกรูปแบบ มาได้อย่างไร? เพราะนี่คือ ASP .NET รักษา ViewState ของคุณ ViewState แสดงสถานะของหน้าเมื่อส่งไปยังเซิร์ฟเวอร์ สถานะถูกกำหนดผ่านสนามที่ซ่อนอยู่ในแต่ละหน้าวางกับ <form runat = "เซิร์ฟเวอร์"> การควบคุม แหล่งที่มาจะมีลักษณะบางอย่างเช่นนี้
<form name="_ctl0" method="post" action="page.aspx" id="_ctl0">
<input type="hidden" name="__VIEWSTATE"
value="dDwtNTI0ODU5MDE1Ozs+ZBCF2ryjMpeVgUrY2eTj79HNl4Q=" />
.....some code
</form>
การดูแลรักษา ViewState เป็นค่าเริ่มต้นสำหรับฟอร์มเว็บ ASP.NET หากคุณต้องการที่จะไม่รักษา ViewState ที่รวมถึงการสั่ง <% @ หน้า EnableViewState = "false" %> ที่ด้านบนของหน้าขอบหรือเพิ่มแอตทริบิวต์ EnableViewState = "false" ในการควบคุมใด ๆ
ดูไฟล์ .aspx ต่อไปนี้ มันแสดงให้เห็นถึง "old" วิธีที่จะทำมัน เมื่อคุณคลิกที่ปุ่มส่งค่ารูปแบบจะหายไป:
ตัวอย่าง
<html>
<body>
<form action="demo_classicasp.aspx" method="post">
Your name: <input type="text" name="fname" size="20">
<input type="submit" value="Submit">
</form>
<%
dim fname
fname=Request.Form("fname")
If fname<>"" Then
Response.Write("Hello " & fname & "!")
End If
%>
</body>
</html>
แสดงตัวอย่าง» นี่คือวิธีการใหม่ ASP .NET เมื่อคุณคลิกที่ปุ่มส่งค่ารูปแบบจะไม่หายไป:
ตัวอย่าง
คลิกดูแหล่งที่มาในกรอบด้านขวาของตัวอย่างที่จะเห็นว่า ASP .NET ได้เพิ่มข้อมูลที่ซ่อนอยู่ในรูปแบบที่จะรักษา ViewState
<script runat="server">
Sub submit(sender As Object, e As EventArgs)
lbl1.Text="Hello " & txt1.Text & "!"
End Sub
</script>
<html>
<body>
<form runat="server">
Your name: <asp:TextBox id="txt1" runat="server" />
<asp:Button OnClick="submit" Text="Submit" runat="server" />
<p><asp:Label id="lbl1" runat="server" /></p>
</form>
</body>
</html>
แสดงตัวอย่าง»