جلسه هفتم آموزش ASP.NET : کنترل های سرور در ASP.NET
کنترل های سرور در ASP.NET
کنترل ها ، بلوک های کوچک ساختاری در رابط کاربری گرافیکی می باشند ، که شامل text box ها ، کلیدها ، check box ها ، list box ها و برخی از ابزارهای دیگر می باشند. با استفاده از این ابزارها ، کاربر می تواند داده ها را وارد نماید ، انتخاب انجام دهد و تنظیمات مورد نظر خود را اعمال نماید.
کنترل ها ، برای انجام کارهای ساختاری ، مانند اعتبارسنجی ، دسترسی به داده ها ، امنیت ، ایجاد صفحات master و دستکاری داده نیز استفاده می شوند.
ASP.NET از پنج نوع کنترل وب استفاده می نماید ، که عبارتند از:
- کنترل های HTML
- کنترل های سرور HTML
- کنترل های سرور ASP.NET
- کنترل های سرور ASP.NET Ajax
- کنترل های کاربر و کنترل های سفارشی
کنترل های سرور ASP.NET ، کنترل های اولیه ای هستند که در ASP.NET مورد استفاده قرار می گیرند. این کنترل ها می توانند در گروه های زیر دسته بندی شوند:
- کنترل های اعتبار سنجی (Validation controls) : این کنترل ها ، برای اعنبار سنجی ورودی کاربر استفاده می شوند و با اجرای اسکریپت در سمت کاربر کار می کنند.
- کنترل های منبع داده (Data source controls) : این کنترل ها ، اتصال داده ها به منابع داده های مختلف را فراهم می کنند.
- کنترل های مشاهده داده (Data view controls) : این کنترل ها ، جدول ها و لیست های مختلفی هستند که می توانند داده ها را از منبع داده نمایش دهند.
- کنترل های شخصی (Personalization controls) : این کنترل ها ، برای شخصی سازی یک صفحه بر اساس تنظیمات و اطلاعات کاربر ، مورد استفاده قرار گیرند.
- کنترل های ورود به سیستم و امنیت (Login and security controls) : این کنترل ها ، عملیات تأیید هویت کاربر را اعمال می کنند.
- صفحات Master : این کنترل ها ، چیدمان و رابط سازگار را در سراسر برنامه کاربردی فراهم می کنند.
- کنترل های ناوبری (Navigation controls) : این کنترل ها ، در عملیات ناوبری کمک کننده هستند. مانند منوها ، tree view و غیره.
- کنترل های غنی (Rich controls) : این کنترل ها قابلیت های اجتماعی را پیاده سازی می کنند. مانند ، AdRotator ، FileUpload ، و کنترل Calendar .
ساختار syntax برای استفاده از کنترل های سرور به این صورت است:
<asp:controlType ID ="ControlID" runat="server" Property1=value1 [Property2=value2] />
علاوه بر این ، ویژال استدیو ، ویژگی های زیر را برای کمک به کدنویسی بدون خطا فراهم می کند:
- کنترل های drag & drop در design view
- ویژگی IntelliSense که خصیصه ها را نمایش داده و به طور خودکار تکمیل می کند.
- پنجره properties که به طور مستقیم مقادیر خصیصه را تنظیم می کند.
خصیصه های مربوط به کنترل های سرور
کنترل های سرور ASP.NET با جنبه بصری از کلاس WebControl مشتق شده اند و تمام خصیصه ها ، رویدادها و متدهای این کلاس را به ارث برده اند.
کلاس WebControl و برخی از کنترل های سرور دیگر که به صورت بصری رندر نمی شوند ، از کلاس System.Web.UI.Control مشتق می شوند. مانند ، کنترل PlaceHolder یا کنترل XML .
کنترل های سرور ASP.NET تمام خصیصه ها ، رویدادها و متدهای کلاس WebControl و کلاس System.Web.UI.Control را به ارث می برند.
جدول زیر خصیصه های به ارث برده شده را که برای تمام کنترل های سرور متداول هستند ، ارائه می دهد:
Property |
توضیحات |
AccessKey |
فشار دادن این کلید با کلید Alt ، تمرکز را به کنترل انتقال می دهد. |
Attributes |
مجموعه ای از صفات دلخواه (فقط برای رندرینگ) می باشند که به خواص کنترل مربوط نیستند. |
BackColor |
رنگ پس زمینه |
BindingContainer |
این کنترل شامل کنترل های اتصال داده می باشند. |
BorderColor |
رنگ حاشیه |
BorderStyle |
سبک حاشیه |
BorderWidth |
عرض حاشیه |
CausesValidation |
اگر اعتبار سنجی انجام شود ، اطلاعات آن را نشان می دهد. |
ChildControlCreated |
نشان می دهد که کنترل مربوط به کنترل سرور فرزند ایجاد شده است. |
ClientID |
کنترل ID برای نشانه گذاری HTML |
Context |
شیء HttpContext مرتبط شده با کنترل سرور |
Controls |
مجموعه ای از تمام کنترل های موجود در control |
ControlStyle |
سبک کنترل سرور Web |
CssClass |
کلاس CSS |
DataItemContainer |
در صورتی که naming container (ظرف نامگذاری) ، گزینه IDataItemContainer را پیاده سازی کند ، یک ارجاع به naming container دریافت می کند. |
DataKeysContainer |
در صورتی که naming container (ظرف نامگذاری) ، گزینه IDataKeysControl را پیاده سازی کند ، یک ارجاع به naming container دریافت می کند. |
DesignMode |
مشخص می کند که آیا کنترلی در سطح طراحی مورد استفاده قرار می گیرد. |
DisabledCssClass |
کلاس CSS را برای اجرای المان HTML رندر شده در زمانی که کنترل غیر فعال است ، دریافت کرده یا تنظیم می نماید. |
Enabled |
نشان می دهد که آیا کنترل فعال شده است. |
EnableTheming |
نشان می دهد که آیا تم بندی (theming) برای کنترل اعمال شده است. |
EnableViewState |
نشان می دهد که آیا وضعیت view کنترل حفظ می شود. |
Events |
فهرستی از نمایندگان هندلر رویداد را برای کنترل دریافت می کند. |
Font |
فونت |
Forecolor |
رنگ پیش زمینه |
HasAttributes |
تعیین می کند که آیا کنترل ، مجموعه صفت ها را دارا می باشد. |
HasChildViewState |
نشان می دهد که آیا کنترل های فرزند مربوط به کنترل جاری سرور ، دارای تنظیمات view-state ذخیره شده هستند. |
Height |
ارتفاع در پیکسل ها یا % |
ID |
شناسه برای کنترل |
IsChildControlStateCleared |
نشان می دهد که آیا کنترل های موجود در یک کنترل ، دارای کنترل های state هستند. |
IsEnabled |
مقداری را که تعیین کننده فعال بودن کنترل است ، دریافت می کند. |
IsTrackingViewState |
نشان می دهد که آیا کنترل سرور ، تغییرات را در view state خود ذخیره می کند. |
IsViewStateEnabled |
نشان می دهد آیا view state برای یک کنترل فعال شده است. |
LoadViewStateById |
نشان می دهد که آیا کنترل در بارگذاری view state خودش توسط ID به جای index سهیم است. |
Page |
صفحه ای است که حاوی کنترل می باشد. |
Parent |
کنترل والدین |
RenderingCompatibility |
نسخه ASP.NET را مشخص می کند که HTML رندر شده با آن سازگاری دارد. |
Site |
Container (ظرفی) است که از کنترل جاری در زمان رندر شدن در سطح طراحی (design surface) میزبانی می کند. |
SkinID |
Skin را برای اجرای کنترل دریافت کرده یا تنظیم می نماید. |
Style |
مجموعه ای از صفت های text را دریافت می کند که به عنوان صفت style در تگ outer از کنترل سرور Web رندر خواهند شد. |
TabIndex |
ایندکس tab را از کنترل سرور Web دریافت کرده یا تنظیم می کند. |
TagKey |
مقدار HtmlTextWriterTag را که مربوط به این کنترل سرور Web است ، دریافت می کند. |
TagName |
نام تگ کنترل را دریافت می کند. |
TemplateControl |
تمپلتی است که حاوی این کنترل می باشد. |
TemplateSourceDirectory |
دایرکتوری مجازی از صفحه یا کنترلی را که حاوی یک کنترل است ، دریافت می کند. |
ToolTip |
متن نمایش داده شده را در هنگامی که اشاره گر موس بر روی کنترل سرور Web قرار می گیرد ، دریافت کرده یا تنظیم می کند. |
UniqueID |
شناسه یکتا |
ViewState |
دیکشنریی از اطلاعات وضعیت را دریافت می کند که view state کنترل سرور برای چندین درخواست به یک صفحه را ذخیره یا restore می کند. |
ViewStateIgnoreCase |
نشان می دهد که آیا شیء StateBag از نوع case-insensitive می باشد. |
ViewStateMode |
حالت view-state از کنترل را دریافت کرده یا تنظیم می کند. |
Visible |
نشان می دهد که آیا یک کنترل سرور قابل مشاهده است. |
Width |
ضخامت کنترل سرور Web را دریافت کرده یا تنظیم می نماید
|
متدهای مربوط به کنترل های سرور
جدول زیر متدهای مربوط به کنترل های سرور را ارائه می دهد:
Method |
توضیحات |
AddAttributesToRender |
صفت ها و سبک های HTML را که نیاز به رندر شدن با HtmlTextWriterTag مشخص شده دارند ، اضافه می کند. |
AddedControl |
پس از این که یک کنترل child به مجموعه کنترل ها از شیء کنترل اضافه شد ، فراخوانی می گردد. |
AddParsedSubObject |
به کنترل سرور اعلان می کند که یک عنصر XML یا HTML تجزیه شد ، و عنصر را به مجموعه کنترل مربوط به کنترل سرور اضافه می کند. |
ApplyStyleSheetSkin |
خصیصه های style تعریف شده در page style sheet را برای کنترل اعمال می کند. |
ClearCachedClientID |
زیر ساخت. مقدار ClientID کش شده را به null تنظیم می کند. |
ClearChildControlState |
اطلاعات وضعیت کنترل را در کنترل های فرزند کنترل سرور حذف می کند. |
ClearChildState |
اطلاعات view-state و control-state را برای تمام کنترل های فرزند کنترل سرور حذف می کند. |
ClearChildViewState |
اطلاعات view-state را برای تمام کنترل های فرزند کنترل سرور حذف می کند. |
CreateChildControls |
در ایجاد کنترل های فرزند مورد استفاده قرار می گیرد. |
CreateControlCollection |
یک شیء ControlCollection را برای نگهداری کنترل های فرزند ایجاد می کند. |
CreateControlStyle |
یک شیء style ایجاد می کند که برای پیاده سازی تمام خصیصه های style مرتبط مورد استفاده قرار می گیرند. |
DataBind |
یک منبع داده را به کنترل سرور و تمام کنترل های فرزند آن اتصال می دهد. |
DataBind(Boolean) |
یک منبع داده را به کنترل سرور و تمام کنترل های فرزند آن با یک option برای اجرای رویداد DataBinding اتصال می دهد. |
DataBindChildren |
یک منبع داده را به کنترل های فرزند کنترل سرور اتصال می دهد. |
Dispose |
یک کنترل سرور را برای انجام پاکسازی نهایی قبل از این که از حافظه آزاد شود ، فعال می کند. |
EnsureChildControls |
تعیین می کند که آیا کنترل سرور ، حاوی کنترل های فرزند است. اگر حاوی کنترل فرزند نباشد ، کنترل های فرزند را ایجاد می کند. |
EnsureID |
یک شناسه برای کنترل هایی ایجاد می کند که شناسه ندارند. |
Equals(Object) |
تعیین می کند که آیا شیء مشخص شده برابر با شیء جاری است. |
Finalize |
اجازه می دهد که یک شیء برای منابع آزاد تلاش کند و عملیات پاکسازی دیگری را قبل از این که شیء توسط مجموعه garbage اصلاح شود ، اجرا نماید. |
FindControl(String) |
Container نامگذاری جاری را برای کنترل سرور با پارامتر ID تعیین شده ، جستجو می کند. |
FindControl(String, Int32) |
Container نامگذاری جاری را برای کنترل سرور با یک ID تعیین شده و یک integer جستجو می کند. |
Focus |
تمرکز ورودی به یک کنترل را تنظیم می کند. |
GetDesignModeState |
داده design-time (زمان طراحی) را برای یک کنترل دریافت می کند. |
GetType |
نوع نمونه جاری را دریافت می کند. |
GetUniqueIDRelativeTo |
قسمت پیشوندی از خصیصه UniqueID کنترل مشخص شده را باز می گرداند. |
HasControls |
تعیین می کند که آیا کنترل سرور ، حاوی کنترل فرزندی می باشد. |
HasEvents |
نشان می دهد که آیا رویدادها برای یک کنترل یا کنترل های فرزند رجیستر شده اند. |
IsLiteralContent |
تعیین می کند که آیا کنترل سرور محتوای دقیق را نگه می دارد. |
LoadControlState |
اطلاعات وضعیت کنترل را restore می کند. |
LoadViewState |
اطلاعات وضعیت view را restore می کند. |
MapPathSecure |
مسیر فیزیکی را که یک مسیر مجازی ، مطلق یا نسبی به آن داده شده است ، بازیابی می کند. |
MemberwiseClone |
یک shallow copy از شیء جاری را ایجاد می کند. |
MergeStyle |
هر المان غیر خالی از style تعیین شده را به کنترل web کپی می کند ، اما هیچ یک المان های style موجود از کنترل را رونوشت نمی کند. |
OnBubbleEvent |
تعیین می کند که آیا رویداد کنترل سرور به سلسله مراتب کنترل سرور مربوط به UI صفحه منتقل شده است. |
OnDataBinding |
رویداد اتصال داده را مطرح می کند. |
OnInit |
رویداد Init را مطرح می کند. |
OnLoad |
رویداد Load را مطرح می کند. |
OnPreRender |
رویداد PreRender را مطرح می کند. |
OnUnload |
رویداد Unload را مطرح می کند. |
OpenFile |
یک Stream مورد استفاده برای خواندن یک فایل را دریافت می کند. |
RemovedControl |
پس از این که کنترل فرزند از مجموعه کنترل های مربوط به شیء control حذف شود ، فراخوانی می شود. |
Render |
کنترل را به HTML writer مشخص شده رندر می کند. |
RenderBeginTag |
تک HTML opening مربوط به کنترل را به writer مشخص شده ، رندر می کند. |
RenderChildren |
محتویات فرزندان یک کنترل سرور را به یک شیء ارائه شده HtmlTextWriter ، که محتویات رندر شده را در کلاینت می نویسد ، ارسال می کند. |
RenderContents |
محتویات کنترل را به writer خاصی رندر می کند. |
RenderControl(HtmlTextWriter) |
محتویات کنترل سرور را به یک شیء ارائه شده HtmlTextWriter ارسال می کند و اگر ردیابی (tracing) فعال باشد ، اطلاعات ردیابی کنترل را ذخیره می کند. |
RenderEndTag |
تگ HTML closing را به writer خاصی رندر می کند. |
ResolveAdapter |
آداپتور کنترلی را که مسئول رندر کردن کنترل خاصی است ، دریافت می کند. |
SaveControlState |
تغییرات مربوط به وضعیت کنترل سرور را از زمان برگشت دادن صفحه به سرور ، ذخیره می کند. |
SaveViewState |
هر وضعیتی را که پس از فراخوانی متد TrackViewState ، اصلاح شده ، ذخیره می کند. |
SetDesignModeState |
داده های زمان طراحی (design-time) برای یک کنترل را تنظیم می کند. |
ToString |
رشته ای را که نشان دهنده شیء جاری است ، باز می گرداند. |
TrackViewState |
کنترلی را برای ردیابی تغییرات به view state خود اعمال می کند تا این تغییرات بتوانند در خصیصه view state شیء ذخیره شوند. |
مثال
بیایید نگاهی به یک کنترل سرور خاص (کنترل tree view) بیاندازیم. کنترل tree view در بخش navigation controls می باشد. سایر کنترل های Navigation عبارتند از: Menu control و SiteMapPath control.
یک کنترل tree view را در صفحه اضافه می کنیم. گزینه Edit Nodes … را از task ها انتخاب می کنیم. هر کدام از نودها را با استفاده از Tree view node editor مطابق شکل زیر ویرایش می کنیم:
پس از این که نودها ایجاد شدند ، design view مطابق تصویر زیر خواهد بود:
Task مربوط به AutoFormat… اجازه می دهد که tree view را مطابق تصویر زیر فرمت کنیم:
یک کنترل label و یک کنترل text box به صفحه اضافه کرده و نام آنها را به ترتیب lblmessage و txtmessage قرار می دهیم.
چند خط کد می نویسیم تا مطمئن شویم که در هنگامی که یک نود خاص انتخاب می شود ، کنترل label ، متن نود را نمایش می دهد و Text box ، تمام نودهای child زیر آن در صورت وجود ، نمایش می دهد. کد پشت صحنه فایل باید مانند کد زیر باشد:
using System;
using System.Collections;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;
namespace eventdemo {
public partial class treeviewdemo : System.Web.UI.Page {
protected void Page_Load(object sender, EventArgs e) {
txtmessage.Text = " ";
}
protected void TreeView1_SelectedNodeChanged(object sender, EventArgs e) {
txtmessage.Text = " ";
lblmessage.Text = "Selected node changed to: " + TreeView1.SelectedNode.Text;
TreeNodeCollection childnodes = TreeView1.SelectedNode.ChildNodes;
if(childnodes != null) {
txtmessage.Text = " ";
foreach (TreeNode t in childnodes) {
txtmessage.Text += t.Value;
}
}
}
}
}
صفحه را برای مشاهده تأثیر تغییرات اعمال شده ، اجرا می نماییم. می توانیم گره را گسترش (expand) داده یا ببندیم (collapse).
این فصل در یک نگاه:
در این فصل پس از بررسی سیستم مسیریابی و طراحی صفحه نمایش ویدیو ها، به سراغ پنل کاربری خواهیم رفت و مباحث Model Binding و…
توجه: این دوره آموزشی به صورت پیوسته بر اساس آخرین نسخه ی ASP.NET Core بروزرسانی خواهد شد. آموزش صفر تا صد طراحی سایت اشتراک ویدیو مشابه آپارات با استفاده از ASP.NET CORE MVC 3.0 و V…این فصل در یک نگاه:
…
توضیحات کلی مجموعه: در این مجموعه قصد داریم تا فروشگاه اینترنتی دیجی کالا رو با Asp.Net Core3 پیاده سازی کنیم. ابتدا طراحی قالب دیجی کالا رو به صورت کامل انجام خواهیم داد. در مرحله میریم …این فصل در یک نگاه:
…
توضیحات کلی مجموعه: در این مجموعه آموزشی، با استفاده از جدیدترین تکنولوژی ها و ابزار های مایکروسافت (دات نت)، به یک پروژه جذاب مدیریت آگهی مشابه دیوار می پردازیم. این آموزش در دو بخش کلی و…این فصل در یک نگاه:
در این دوره به آموزش صفر تا صد جدیدترین نسخه ASP یعنی CORE جدیدترین ورژن خواهیم پرداخت.این آموزش از سطح مقدماتی تا فوق …
دوره آموزش کامل طراحی وب به همراه پروژه ساخت سیستم مدیریت کتابخانه این دوره با کور 1 آغاز می شود و در ادامه پروژه به کور 2 تبدیل می شودو پروژه نهایی (سیستم مدیریت کتابخانه) با Asp.net کور…این فصل در یک نگاه:
ساخت محیط کاربریآموزش نحوه ی ارسال ایمیل در Asp.net MVCآموزش تنظیمات Gmail برای استفادهاستفاده از Yahooاستفاده از سرویس …
به نام خدا... در خدمتتون هستم با آموزش ارسال ایمیل در Asp.net MVC... ارسال ایمیل یکی از اجزای اصلی ییک سایت به شمار می رود و واقعا سایتی که برای اجزای مختلفش همانند ثبت کاربر جدید و یا ارسال…این فصل در یک نگاه:
فصل دوم در یک نگاه:فصل دوم در یک نگاه:…
در این پکیج به مبحث طراحی وب ، در قالب ساخت یک سایت فروشگاهی 5040 به آدرس http://5040.ir می پردازیم که به جرات مشهورترین و یکی از برترین فروشگاه های مجازی در کشور است. در این مجموعه قصد داری…این فصل در یک نگاه:
…
در این دوره آموزشی، وبسایت ورزش3 را با استفاده از ASP.NET Core پیاده سازی می کنیم و همچنین اپ اندروید آن را هم با Xamarin متصل به سرور سایت طراحی و در نهایت نحوه انتشار آن در مارکت هایی مثل …این فصل در یک نگاه:
کاملترین آموزش هاست و کار با سی پنل.در هنگام خرید سرویس هاست کلمه ای به نام “کنترل پنل” را زیاد خواهید دید آیا تا به حال…
سی پنل یک کنترل پنل هاست محبوب و معروف در جهان و ایران است. در فیلم آموزش سی پنل هم توصیه اکید شده تا افراد مبتدی و حتی افراد حرفه ای از این کنترل پنل هاست سی پنل استفاده کنند. آموزش cpanel …این فصل در یک نگاه:
فصل پنجم…
توضیحات کلی مجموعه: درباره گیت: لذت پیش بردن پروژه های برنامه نویسی خود را با بهترین ورژن کنترل سیستم جهان تجربه کنید کامل ترین دوره ی آموزشی گیت و گیت هاب به همراه مثال های کاربردی گی…این فصل در یک نگاه:
رشد و درآمدزایی یک وب سایت یا کسب و کار اینترنتی کاملا به ذوق و مهارت وب مستر یا همان مدیر اصلی وب سایت گره خورده و متاس…
اصول مدیریت وب سایت برای وب مستر شدن برای موفقیت یک وب سایت لازم الاجراست. زیرا شما دوست دارید وب سایت خود را به کارخانه پولسازی تبدیل کنید. این واقعیت رویا نیست. هرکس این اصول را بداند به …