آموزش کامل کار با کنترل AJAX در ASP.NET
کنترل AJAX
AJAX مخفف عبارت Asynchronous JavaScript and XML می باشد. AJAX یک تکنولوژی cross platform می باشد که زمان پاسخ دهی را سرعت می بخشد. کنترل های سرور AJAX ، اسکریپتی به صفحه اضافه می کنند که توسط مرورگر اجرا و پردازش می شود.
با این وجود ، همانند سایر کنترل های سرور ASP.NET ، کنترل های سرور AJAX نیز می تواند متدها و هندلرهای رویداد مرتبط با آنها را دارا باشد که در سمت سرور پردازش می شوند.
جعبه ابزار control در Visual Studio IDE حاوی گروهی از کنترل ها می باشد که 'AJAX Extensions' نامیده می شوند.
کنترل ScriptManager
کنترل ScriptManager از مهم ترین کنترل ها می باشد و باید در صفحه موجود باشد تا با سایر کنترل ها کار نماید.
قاعده نوشتاری این کنترل به صورت زیر می باشد:
<asp:ScriptManager ID="ScriptManager1" runat="server">
</asp:ScriptManager>
اگر ما بخواهیم که یک سایت 'Ajax Enabled site' را بسازیم ، یا یک فرم 'AJAX Web Form' را از جعبه محاوره ای 'Add Item' اضافه نماییم ، فرم وب به طور خودکار حاوی کنترل ScriptManager خواهد بود. کنترل ScriptManager از اسکریپت های سمت کلاینت برای تمام کنترل های سمت سرور حمایت می کند.
کنترل UpdatePanel
کنترل UpdatePanel ، یک کنترل container می باشد و از کلاس Control مشتق شده است. این کنترل به عنوان یک ظرف (container) برای کنترل های فرزند داخلش عمل می کند و رابط کاربری خاصی برای خود ندارد. هنگامی که یک کنترل درون آن ، پستی را به صورت post back ارسال می کند ، کنترل UpdatePanel مداخله می کند تا ارسال پست را به صورت نامتقارن (asynchronously) شروع کرده و فقط آن بخش از صفحه را به روز نماید.
برای مثال ، وقتی که یک کنترل button در داخل پنل به روز رسانی شده و کلیک شود ، فقط کنترل های درون پنل آپدیت شده ، تحت تأثیر قرار خواهند گرفت و کنترل های سایر بخش های صفحه تحت تأثیر قرار نخواهند گرفت. به این عمل partial post back یا asynchronous post back گفته می شود.
مثال
یک فرم وب AJAX به برنامه کاربردی خود اضافه می کنیم. این فرم ه طور پیش فرض حاوی کنترل script manager می باشد. یک پنل update وارد می کنیم. یک کنترل button همراه با کنترل label درون کنترل پنل update جای می دهیم. مجموعه ای از کلید و برچسب را در خارج پنل قرار می دهیم.
Design view این مال باید مطابق تصویر زیر باشد:
کد فایل source به صورت زیر می باشد:
<form id="form1" runat="server">
<div>
<asp:ScriptManager ID="ScriptManager1" runat="server" />
</div>
<asp:UpdatePanel ID="UpdatePanel1" runat="server">
<ContentTemplate>
<asp:Button ID="btnpartial" runat="server" onclick="btnpartial_Click" Text="Partial PostBack"/>
<br />
<br />
<asp:Label ID="lblpartial" runat="server"></asp:Label>
</ContentTemplate>
</asp:UpdatePanel>
<p> </p>
<p>Outside the Update Panel</p>
<p>
<asp:Button ID="btntotal" runat="server" onclick="btntotal_Click" Text="Total PostBack" />
</p>
<asp:Label ID="lbltotal" runat="server"></asp:Label>
</form>
هر دو کنترل های button دارای کدهای مشابهی برای هندلر رویداد می باشند:
string time = DateTime.Now.ToLongTimeString();
lblpartial.Text = "Showing time from panel" + time;
lbltotal.Text = "Showing time from outside" + time;
در حین اجرای صفحه مشاهده می کنید که ، اگر کلید Total PostBadck کلیک شود ، تاریخ در هر دو برچسب به روز رسانی می شود ، اما اگر کلید Partial PostBack کلیک شود ، فقط برچسب درون پنل update به روز رسانی می گردد.
یک صفحه می تواند حاوی چندین پنل update بوده و هر پنل شامل کنترل های دیگری مانند grid باشد و بخش های مختلفی از داده ها را نمایش دهد.
هنگامی که یک رویداد total post back رخ می دهد ، محتوای پنل update به طور پیش فرض به روز رسانی می شود. این حالت پیش فرض ، می تواند با تغییر دادن خصیصه UpdateMode مربوط به کنترل تغییر یابد. بیایید نگاهی به سایر خصیصه های پنل update بیاندازیم.
خصیصه های کنترل UpdatePanel
خصیصه |
توضیحات |
ChildrenAsTriggers |
این خصیصه نشان می دهد که آیا Post back ها از سمت کنترل های فرزند می آیند یا خیر ، که موجب می شوند پنل update تازه سازی (refresh) شود. |
ContentTemplate |
این خصیصه تمپلت محتوا می باشد و چیزی را که در پنل update ، هنگام refresh شدن نمایان می شود ، تعریف می کند. |
ContentTemplateContainer |
شیء template container را که به طور خودکار ایجاد شده ، بازیابی می کند و برای افزودن کنترل های فرزند قابل برنامه ریزی ، مورد استفاده قرار می دهد. |
IsInPartialRendering |
نشان می دهد که آیا پنل به عنوان بخشی از partial post back به روز رسانی می شود یا خیر. |
RenderMode |
حالت های رندر را نشان می دهد. حالت های موجود Block و Inline می باشند. |
UpdateMode |
حالت رندرینگ را از طریق تعیین کردن برخی از شرط ها دریافت یا تنظیم می کند. |
Triggers |
اشیاء مجموعه trigger را که هر کدام با یک رویداد مرتبط هستند و موجب refresh شدن خودکار پنل می شوند ، تعریف می کند. |
متدهای کنترل UpdatePanel
جدول زیر متدهای کنترل update پنل را نشان می دهد:
متد |
توضیحات |
CreateContentTemplateContainer |
یک شیء Control را ایجاد می کند که به عنوان ظرفی برای کنترل های فرزند عمل می کند که این کنترل های فرزند ، محتوای کنترل UpdatePanel را تعریف می کنند. |
CreateControlCollection |
مجموعه ای از تمام کنترل ها را باز می گرداند که در کنترل UpdatePanel موجود هستند. |
Initialize |
اگر رندرینگ partial-page فعال شود ، مجموعه ای از UpdatePanel control trigger را آغاز می کند. |
Update |
موجب به روز رسانی محتوای یک کنترل UpdatePanel می شود. |
رفتار پنل update بستگی به مقادیر خصیصه UpdateMode و خصیصه ChildrenAsTriggers دارد.
UpdateMode |
ChildrenAsTriggers |
Effect |
Always |
False |
پارامترهای غیر مجاز |
Always |
True |
اگر تمام صفحه refresh شود یا یک کنترل فرزند در صفحه ، عملیات post back را انجام دهد ، UpdatePanel به روز رسانی می شود. |
Conditional |
False |
اگر تمام صفحه refresh شود یا یک کنترل triggering داخل آن عملیات تازه سازی را آغاز کند ، UpdatePanel به روز رسانی می شود. |
Conditional |
True |
اگر تمام صفحه تازه سازی شود یا یک کنترل فرزند در صفحه عملیات post back را انجام دهد یا یک کنترل triggering داخل آن عملیات تازه سازی را آغاز کند ، UpdatePanel به روز رسانی می شود. |
کنترل UpdateProgress
کنترل UpdateProgress نوعی از feekback (بازخورد) را در مرورگر فراهم می کند ، در حالی که یک یا چند کنترل پنل update به روز می شوند. برای مثال ، درحالی که کاربری وارد سیستم می شود یا منتظر پاسخ سرور می باشد ، در این حین برخی از وظایف مربوط به پایگاه داده انجام می شوند.
این کنترل یک اعلام وصول بصری مانند "صفحه در حال بارگذاری است..." را ارائه می دهد که نشان دهنده پیشرفت کار می باشد.
قاعده نوشتاری برای کنترل UpdateProgress به صورت زیر می باشد:
<asp:UpdateProgress ID="UpdateProgress1" runat="server" DynamicLayout="true" AssociatedUpdatePanelID="UpdatePanel1" >
<ProgressTemplate>
Loading...
</ProgressTemplate>
</asp:UpdateProgress>
قطعه کد فوق یک پیام ساده را درون تگ ProgrewwTemplate نشان می دهد. با این حال ، یاختار می تواند به صورت یک تصویر یا سایر کنترل های مرتبط باشد. کنترل UpdateProgress برای هر postback ناهمزمان نمایش داده می شود ، مگر این که کنترل UpdateProgress ، به یک پنل update واحد ، با استفاده از خصیصه AssociatedUpdatePanelID اختصاص داده شود.
خصیصه های کنترل UpdateProgress
جدول زیر خصیصه های کنترل UpdateProgress را نشان می دهد:
خصیصه |
توضیحات |
AssociatedUpdatePanelID |
ID پنل update را که به این کنترل مرتبط شده است ، دریافت کرده یا تنظیم می کند. |
Attributes |
صفت های cascading style sheet (CSS) کنترل UpdateProgress دریافت کرده یا تنظیم می کند. |
DisplayAfter |
زمانی را به واحد میلی ثانیه که تمپلت پیشرفت (progress template) را نمایش می دهد، دریافت کرده و تنظیم می کند. مقدار پیش فرض این خصیصه برابر با 500 می باشد. |
DynamicLayout |
نشان می دهد که آیا تمپلت پیشرفت به طور خودکار رندر می شود یا خیر. |
ProgressTemplate |
نشان دهنده تمپلت نمایش داده شده در طول فرآیند post back غیرهمزمان می باشد که زمان بیشتری از مدت زمان DisplayAfter طول می کشد. |
متدهای کنترل UpdateProgress
متد |
توضیحات |
GetScriptDescriptors |
لیستی از مؤلفه ها ، رفتارها و کنترل های کلاینت را باز می گرداند که برای عملکرد کنترل کلاینت UpdateProgress موردنیاز هستند. |
GetScriptReferences |
لیستی از وابستگی های کتابخانه کنترل کلاینت را برای کنترل UpdateProgress باز می گرداند. |
کنترل Timer
کنترل Timer برای مقداردهی کردن post back به صورت خودکار مورد استفاده قرار می گیرد. این کار می تواند به دو روش انجام شود:
- تنظیم نمودن خصیصه Triggers مربوط به کنترل UpdatePanel :
<Triggers>
<asp:AsyncPostBackTrigger ControlID="btnpanel2" EventName="Click" />
</Triggers>
-
قرار دادن یک کنترل Timer به طور مستقیم در داخل UpdatePanel ، برای عمل کردن به عنوان یک trigger کنترل فرزند. یک تایمر واحد می تواند به عنوان trigger برای چندین UpdatePanel باشد.
<asp:UpdatePanel ID="UpdatePanel1" runat="server" UpdateMode="Always">
<ContentTemplate>
<asp:Timer ID="Timer1" runat="server" Interval="1000">
</asp:Timer>
<asp:Label ID="Label1" runat="server" Height="101px" style="width:304px" >
</asp:Label>
</ContentTemplate>
</asp:UpdatePanel>
این فصل در یک نگاه:
در این فصل پس از بررسی سیستم مسیریابی و طراحی صفحه نمایش ویدیو ها، به سراغ پنل کاربری خواهیم رفت و مباحث 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 …این فصل در یک نگاه:
فصل پنجم…
توضیحات کلی مجموعه: درباره گیت: لذت پیش بردن پروژه های برنامه نویسی خود را با بهترین ورژن کنترل سیستم جهان تجربه کنید کامل ترین دوره ی آموزشی گیت و گیت هاب به همراه مثال های کاربردی گی…این فصل در یک نگاه:
رشد و درآمدزایی یک وب سایت یا کسب و کار اینترنتی کاملا به ذوق و مهارت وب مستر یا همان مدیر اصلی وب سایت گره خورده و متاس…
اصول مدیریت وب سایت برای وب مستر شدن برای موفقیت یک وب سایت لازم الاجراست. زیرا شما دوست دارید وب سایت خود را به کارخانه پولسازی تبدیل کنید. این واقعیت رویا نیست. هرکس این اصول را بداند به …