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