ASP.NET - کنترل سرور

کنترل سرور برچسب‌هایی هستند که توسط سرور قابل فهم هستند.

محدودیت‌های Classic ASP

کد زیر از بخش قبلی کپی شده است:

<html>
<body style="background-color:#e5eecc; text-align:center;">
<h2>Hello CodeW3C.com!</h2>
<p><%Response.Write(now())%></p>
</body>
</html>

کد بالا محدودیت‌های Classic ASP را نشان می‌دهد: بلوک‌های کد باید در مکان‌هایی که نیاز به خروجی دارند قرار گیرند.

با استفاده از Classic ASP، نمی‌توانیم کد قابل اجرا را از HTML خود جدا کنیم. این باعث می‌شود که صفحه سخت‌تر خوانا و سخت‌تر قابل نگهداری شود.

ASP.NET - کنترل سرور

با استفاده از کنترل سرور، ASP.NET مشکل "کد نایلون" که در بالا توضیح داده شده را حل کرده است.

کنترل سرور برچسب‌هایی هستند که توسط سرور قابل فهم هستند.

سه نوع کنترل سرور وجود دارد:

  • برچسب‌های کنترل سرور HTML - برچسب‌های سنتی HTML
  • برچسب‌های سرور وب - برچسب‌های جدید ASP.NET
  • کنترل سرور Validation - برای تأیید ورودی‌ها

ASP.NET - برچسب‌های کنترل سرور HTML

برچسب‌های کنترل سرور HTML قابل فهم توسط سرور هستند.

عناصر HTML در ASP.NET به عنوان متن پردازش می‌شوند. برای اینکه این عناصر قابل برنامه‌ریزی باشند، باید به این عناصر HTML ویژگی runat="server"این ویژگی نشان‌دهنده این است که این عنصر یک کنترل سرور است. همچنین باید به این کنترل سرور属性 id اضافه شود تا این id به عنوان مرجع برای عملکرد کنترل سرور در حال اجرا استفاده شود.

توضیح:تمام کنترل‌های سرور HTML باید در داخل برچسب <form> با ویژگی runat="server" قرار گیرند. ویژگی runat="server" نشان می‌دهد که فرم باید در سرور پردازش شود. همچنین نشان می‌دهد که کنترل‌های شامل آن نیز قابل دسترسی توسط اسکریپت‌های سرور هستند.

در مثال زیر، ما در فایل .aspx یک کنترل سرور HtmlAnchor تعریف کرده‌ایم. سپس ما در یک رویداد处理器 به ویژگی HRef کنترل HtmlAnchor عمل کرده‌ایم. رویداد Page_Load یکی از انواع بسیاری از رویدادهای قابل درک ASP.NET است:

توضیح:رویداد处理器 (event handler) یک زیربرنامه است که برای اجرای کد برای یک رویداد خاص استفاده می‌شود.

<script runat="server">
Sub Page_Load
link1.HRef="http://www.codew3c.com"
End Sub
</script>
<html>
<body>
<form runat="server">
<a id="link1" runat="server">برای بازدید از CodeW3C.com کلیک کنید!</a>
</form>
</body>
</html>

توضیح:کد قابل اجرا به طور کامل به خارج از HTML منتقل شده است.

ASP.NET - کنترل‌های سرور وب

کنترل‌های سرور وب برچسب‌های خاصی هستند که سرور می‌تواند آنها را درک کند.

مانند کنترل‌های سرور HTML، کنترل‌های سرور وب نیز در سرور ایجاد می‌شوند، آنها نیز نیاز به ویژگی runat="server" دارند تا فعال شوند. اما کنترل‌های سرور وب نیازی به تطبیق با هیچ عنصر HTML موجود ندارند، آنها نمایندگان عنصرهای پیچیده‌تری هستند.

قوانین دستور زبان برای ایجاد کنترل سرور وب است:

<asp:control_name id="some_id" runat="server" />

در مثال زیر، ما در فایل .aspx یک کنترل سرور Button تعریف کرده‌ایم. سپس ما یک رویداد处理器 برای رویداد کلیک ایجاد کرده‌ایم که می‌تواند متن روی دکمه را تغییر دهد:

<script runat="server">
Sub submit(Source As Object, e As EventArgs)
button1.Text="من کلیک کردم!"
End Sub
</script>
<html>
<body>
<form runat="server">
<asp:Button id="button1" Text=" کلیک کنید!" runat="server" OnClick="submit"/>
</form>
</body>
</html>

ASP.NET - کنترل سرور تأیید

کنترل سرور تأیید برای تأیید ورودی کاربر استفاده می‌شود. اگر ورودی کاربر تأیید نشود، یک پیام خطا به کاربر نمایش داده خواهد شد.

هر کنترل تأیید یک نوع تأیید خاص را اجرا می‌کند (مثلاً تأیید یک مقدار خاص یا یک دامنه‌ی مقدار).

به طور پیش‌فرض، هنگام کلیک بر روی Button، ImageButton یا LinkButton، تأیید صفحه اجرا می‌شود. می‌توانید با تنظیم ویژگی CausesValidation به false، از تأیید برخی از کنترل‌های دکمه جلوگیری کنید.

جملات ساختاری برای ایجاد کنترل‌های سرور تأیید (Validation) به صورت پیش‌فرض است.

<asp:control_name id="some_id" runat="server" />

در مثال زیر، ما یک کنترل TextBox، یک کنترل Button و یک کنترل RangeValidator در فایل .aspx اعلام کرده‌ایم. اگر تأیید شکست بخورد، متن "مقدار باید از 1 تا 100 باشد!" در کنترل RangeValidator نمایش داده می‌شود:

<html>
<body>
<form runat="server">
<p>اعداد از 1 تا 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="مقدار باید از 1 تا 100 باشد!"
runat="server" />
</p>
</form>
</body>
</html>

این مثال را نمایش دهید