ควบคุมเซิร์ฟเวอร์ที่มีแท็กที่มีความเข้าใจโดยเซิร์ฟเวอร์
ข้อ จำกัด ในคลาสสิก ASP
รายชื่อดังต่อไปนี้ได้รับการคัดลอกมาจากบทก่อนหน้านี้:
<html>
<body bgcolor="yellow">
<center>
<h2>Hello w3ii!</h2>
<p> <%Response.Write(now())%> </p>
</center>
</body>
</html>
โค้ดข้างต้นแสดงให้เห็นถึงข้อ จำกัด ในคลาสสิก ASP A: การป้องกันรหัสจะต้องมีการวางตำแหน่งที่คุณต้องการออกไปปรากฏ
ด้วยความคลาสสิก ASP มันเป็นไปไม่ได้ที่จะแยกรหัสปฏิบัติการจาก HTML ของตัวเอง นี้จะทำให้หน้ายากที่จะอ่านและยากที่จะรักษา
การควบคุมเซิร์ฟเวอร์ - ASP.NET
ASP.NET ได้แก้ไข "spaghetti-code" ปัญหาที่อธิบายข้างต้นด้วยการควบคุมเซิร์ฟเวอร์
ควบคุมเซิร์ฟเวอร์ที่มีแท็กที่มีความเข้าใจโดยเซิร์ฟเวอร์
มีสามชนิดของการควบคุมเซิร์ฟเวอร์:
- ควบคุมเซิร์ฟเวอร์ HTML - แท็ก HTML แบบดั้งเดิม
- การควบคุมเว็บเซิร์ฟเวอร์ - แท็ก ASP.NET ใหม่
- การควบคุมการตรวจสอบเซิร์ฟเวอร์ - สำหรับการเข้าตรวจสอบ
ควบคุมเซิร์ฟเวอร์ HTML - ASP.NET
ควบคุมเซิร์ฟเวอร์ HTML มีแท็ก HTML เข้าใจโดยเซิร์ฟเวอร์
องค์ประกอบ HTML ในแฟ้ม ASP.NET จะตามค่าเริ่มต้นถือว่าเป็นข้อความ เพื่อให้องค์ประกอบเหล่านี้โปรแกรมเพิ่ม runat = แอตทริบิวต์ "เซิร์ฟเวอร์" ไปยังองค์ประกอบ HTML คุณลักษณะนี้แสดงให้เห็นว่าองค์ประกอบที่ควรจะถือว่าเป็นตัวควบคุมเซิร์ฟเวอร์ id แอตทริบิวต์จะถูกเพิ่มในการระบุการควบคุมเซิร์ฟเวอร์ อ้างอิงรหัสสามารถใช้ในการจัดการควบคุมเซิร์ฟเวอร์ในเวลาทำงาน
Note: ทุก HTML ควบคุมเซิร์ฟเวอร์จะต้องเป็นภายใน <form> แท็กกับ runat="server" แอตทริบิวต์ runat="server" แอตทริบิวต์แสดงให้เห็นว่ารูปแบบควรจะดำเนินการบนเซิร์ฟเวอร์ นอกจากนี้ยังแสดงให้เห็นว่าการควบคุมการปิดล้อมที่สามารถเข้าถึงได้โดยสคริปต์เซิร์ฟเวอร์
ในตัวอย่างต่อไปนี้เราประกาศควบคุมเซิร์ฟเวอร์ HtmlAnchor ในแฟ้มขอบ จากนั้นเราก็จัดการ HRef แอตทริบิวต์ของการควบคุม HtmlAnchor ในตัวจัดการเหตุการณ์ (an event handler is a subroutine that executes code for a given event) Page_Load เหตุการณ์เป็นหนึ่งในกิจกรรมหลายอย่างที่เข้าใจ ASP.NET:
<script runat="server">
Sub Page_Load
link1.HRef="http://www.w3ii.com"
End Sub
</script>
<html>
<body>
<form runat="server">
<a id="link1" runat="server">Visit w3ii!</a>
</form>
</body>
</html>
รหัสปฏิบัติการตัวเองได้ถูกย้ายไปนอก HTML
ASP.NET - การควบคุมเว็บเซิร์ฟเวอร์
ควบคุมเว็บเซิร์ฟเวอร์ที่มีแท็ก ASP.NET พิเศษเข้าใจโดยเซิร์ฟเวอร์
เช่นเดียวกับการควบคุมเซิร์ฟเวอร์ HTML, การควบคุมเว็บเซิร์ฟเวอร์ที่ถูกสร้างขึ้นยังอยู่ในเซิร์ฟเวอร์และพวกเขาต้อง runat = แอตทริบิวต์ "เซิร์ฟเวอร์" ในการทำงาน อย่างไรก็ตามการควบคุมเว็บเซิร์ฟเวอร์ไม่จำเป็นต้องแมปไปยังองค์ประกอบ HTML ใด ๆ ที่มีอยู่และพวกเขาอาจจะเป็นองค์ประกอบที่ซับซ้อนมากขึ้น
ไวยากรณ์สำหรับการสร้างการควบคุมเว็บเซิร์ฟเวอร์คือ:
<asp:control_name id="some_id" runat="server" />
ในตัวอย่างต่อไปนี้เราประกาศควบคุมเซิร์ฟเวอร์ปุ่มในแฟ้มขอบ จากนั้นเราก็สร้างตัวจัดการเหตุการณ์สำหรับเหตุการณ์คลิกซึ่งการเปลี่ยนแปลงข้อความบนปุ่ม:
<script runat="server">
Sub submit(Source As Object, e As EventArgs)
button1.Text="You clicked me!"
End Sub
</script>
<html>
<body>
<form runat="server">
<asp:Button id="button1" Text="Click me!"
runat="server" OnClick="submit"/>
</form>
</body>
</html>
การควบคุมการตรวจสอบเซิร์ฟเวอร์ - ASP.NET
ควบคุมเซิร์ฟเวอร์การตรวจสอบจะใช้ในการตรวจสอบการใช้การป้อนข้อมูล หากผู้ใช้อินพุตไม่ผ่านการตรวจสอบก็จะแสดงข้อผิดพลาดให้กับผู้ใช้
แต่ละการควบคุมการตรวจสอบดำเนินการประเภทที่เฉพาะเจาะจงของการตรวจสอบ (เช่นการตรวจสอบกับค่าที่เฉพาะเจาะจงหรือช่วงของค่า)
โดยค่าเริ่มต้นการตรวจสอบหน้าจะดำเนินการเมื่อมีปุ่ม ImageButton หรือควบคุม LinkButton คลิก คุณสามารถป้องกันการตรวจสอบเมื่อมีการควบคุมปุ่มมีการคลิกโดยการตั้งค่า CausesValidation คุณสมบัติการเท็จ
ไวยากรณ์สำหรับการสร้างตัวควบคุมเซิร์ฟเวอร์การตรวจสอบคือ:
<asp:control_name id="some_id" runat="server" />
ในตัวอย่างต่อไปเราประกาศควบคุมกล่องข้อความหนึ่งปุ่มควบคุมและการควบคุม RangeValidator หนึ่งในแฟ้มขอบ หากการตรวจสอบล้มเหลวข้อความ "The value must be from 1 to 100!" จะถูกแสดงในการควบคุม RangeValidator:
ตัวอย่าง
<html>
<body>
<form runat="server">
<p>Enter a number from 1 to 100:
<asp:TextBox id="tbox1" runat="server" />
<br /><br />
<asp:Button Text="Submit" runat="server" />
</p>
<p>
<asp:RangeValidator
ControlToValidate="tbox1"
MinimumValue="1"
MaximumValue="100"
Type="Integer"
Text="The value must be from 1 to 100!"
runat="server" />
</p>
</form>
</body>
</html>
แสดงตัวอย่าง»