PDA

View Full Version : مقاله جامع: User Control ها و Custom Control ها در ASP.NET



Behrouz_Rad
یک شنبه 25 اردیبهشت 1384, 23:46 عصر
قسمت اول:
امکان ایجاد و استفاده از User Control ها یا همان کنترل های سفارشی ایجاد شده توسط کاربر، از قدیم الایام در زبان های برنامه نویسی وجود داشته.
تکنولوژیASP.NET که به صورت تعاملی با زبان های مبتنی بر پلت فرم دات نت استفاده میشود نیز از این قاعده مستثنا نیست.
<hr>
یکی از عوامل مهمی که در بالا بردن کارایی برنامه موثر است، امکان استفاده مجدد و بهنیه از عناصری است که به صورت مکرر در برنامه مورد استفاده قرار می گیرند.

اصطلاح Reuse: به معنای استفاده مجدد و تکنیکی است برای جلوگیری از ایجاد مجدد عناصری که مورد استفاده زیادی چه در برنامه برنامه نویس و چه در برنامه های دیگر دارند.
تکنیک Reuse، نیاز به تکرار مجدد کدها را در برنامه از بین می برد.
<hr>

:User Controls
تکنیک Reuse در ASP کلاسیک، با اضافه کردن دستور INCLUDE# به ابتدای صفحه میسر بود.


&lt;!-- #include file = "filename.inc" -->

استفاده از این روش، مقداری نسنجیده است و مثلا ممکن است در debug کردن برنامه مشکلاتی به وجود آید.
کارایی کنترلهایی که به وسیله ASP.NET ایجاد می شوند نیز قابل قیاس با ASP کلاسیک نیست.
نکته: در ASP.NET همچنان قادر به استفاده از دستور INCLUDE# هستید.
ASP.NET به منظور معنای واقعی بخشیدن به تکنیک Reuse، ایجاد و استفاده از User Control ها را در برنامه میسر می سازد.
یک User Control شامل تگ های HTML، اسکریپت های سمت سرور و احیانا کنترل های ASP.NET است. تمامی این تگ ها، اسکریپت ها و کنترل ها، در فایلی با پسوند ascx قرار می گیرند.
ASP.NET با User Control همانند یک شی یا عنصر معمولی رفتار خواهد کرد.
User Control ها می توانند دارای خواص (Properties) و متد (Method) باشند. به روال ها پاسخ و در مقابل رویدادها از خود عکس العمل نشان دهند.
یکی از مزایای User Control ها این است که می توانند در حافظه سرور با استفاده از دایرکتیو OutputCache، کش شوند که این عمل در بالا بردن سرعت دسترسی و افزایش Performance برنامه تاثیر بسزایی دارد.
مثال 1:
به عنوان اولین مثال، User Control زیر به منظور ایجاد تعدادی لینک به صفحات مختلف ایجاد شده است:


&lt;%@ Control Language="vb" %>
&lt;table cellpadding="0" cellspacing="0">
&lt;tr>
&lt;td valign="top">
&lt;strong>Links&#58;&lt;/strong>&lt;br/>
&lt;hr width='80%'>
&lt;a href="myPage.aspx"
onmouseover="img1.src='myImage1.jpg';"
onmouseout="img1.src='myImage2.jpg';">
&lt;img border='0' src='myImage2.jpg' id='img1' name='img1'>&lt;/a>
&lt;a href="myPage.aspx"
onmouseover="img1.src='myImage1.jpg';"
onmouseout="img1.src='myIamge2.jpg';">my Link&lt;/a>
&lt;hr width='80%'>
&lt;/td>
&lt;/tr>
&lt;/table>

در مثال فوق، به استثنای دایرکتیو Control@ (که می تواند استفاده نشود)، بقیه کدها، کدهای شامل تگ های HTML و اسکریپت های سمت کلاینت هستند (به منظور سویچ عکس)
نکته: نقش دایرکتیو Control در User Control دقیقا همانند نقش دایرکتیو Page در صفحات aspx است
User Control ها به دو طریق قابلیت اضافه شدن به وب فرم را دارند.
1) با شامل کردن دایرکتیو Register به ابتدای صفحه aspx
2) با استفاده از متد LoadControl کلاس TemplateControl

مثال 2:
مثال بعد، ازدایرکتیو Register به منظور استفاده از User Control مثال 1 در وب فرم استفاده می کند.


&lt;%@ Page Language="vb" %>
&lt;%@ Register TagPrefix="myControl" TagName="myLinks" Src="myUserControlFileName.ascx" %>
&lt;html>
&lt;head>
&lt;/head>
&lt;body>
&lt;table border="1" width="100%" cellpadding="20" cellspacing="0">
&lt;tr>
&lt;td align="center" width="150">
&lt;img src="myImage.jpg"/>
&lt;/td>
&lt;td align="center">
&lt;h1>User Control Page&lt;h1>
&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td width="150">
&lt;myControl&#58;myLinks runat="server"/>
&lt;/td>
&lt;td>
Contents
&lt;br/>&lt;br/>&lt;br/>&lt;br/>&lt;br/>&lt;br/>&lt;br/>&lt;br/>&lt;br/>
&lt;/td>
&lt;/tr>
&lt;/table>
&lt;/body>
&lt;/html>

در مثال فوق با تعریفی که از User Control در دایرکتیو Register آمده، کامپایلر ASP.NET به دنبال تگ های &lt;myControl:myLinks> با خاصیت سمت سروری (runat="server") در صفحه می گردد و در صورت پیدا شدن، پس از پردازش User Control، خروجی پردازش را در جایی که User Control بر روی وب فرم قرار داده شده، نمایش می دهد.

مثال 3:
در مثال بعد، طریقه استفاده پویا (Dynamic) از User Control با استفاده از متد LoadControl نشان داده شده است.
نکته: بهتر است User Control به یک کنترل PlaceHolder اضافه شود. در این صورت، تعیین مکان دقیق قرارگیری User Control بر روی وب فرم به آسانی میسر می شود.


&lt;%@ Page Language="vb" %>
&lt;html>
&lt;head>
&lt;script runat="server">
Sub Page_Load&#40; &#41;
PlaceHolder.Controls.Add&#40;LoadControl&#40;"myUserControlFileName.ascx"&#41;&#41;
End Sub
&lt;/script>
&lt;/head>
&lt;body>
&lt;table border="1" width="100%" cellpadding="20" cellspacing="0">
&lt;tr>
&lt;td align="center" width="150">
&lt;img src="myImage.jpg"/>
&lt;/td>
&lt;td align="center">
&lt;h1>User Control Page&lt;h1>
&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td width="150">
&lt;asp&#58;placeholder id="PlaceHolder" runat="server"/>
&lt;/td>
&lt;td>
Contents
&lt;br/>&lt;br/>&lt;br/>&lt;br/>&lt;br/>&lt;br/>&lt;br/>&lt;br/>&lt;br/>
&lt;/td>
&lt;/tr>
&lt;/table>
&lt;/body>
&lt;/html>

در قسمت دوم مقاله، توضیحات کاملتری در مورد User Control ها و ایجاد خواص و متدهای سفارشی آنها داده خواهد شد.

aakh1361
سه شنبه 04 بهمن 1384, 23:35 عصر
اقا بهروز ما منتظر دومیش هستیم http://qsmile.com/qsimages/34.gif

amir master
پنج شنبه 18 اسفند 1384, 19:29 عصر
خوبه ممنون

PrinceDotNet
چهارشنبه 27 اردیبهشت 1385, 15:18 عصر
دومیش چی شد ؟

golihaghighi
چهارشنبه 10 مرداد 1386, 10:51 صبح
بقیه اش چی شد؟
لطفا ادامه بده

miladr
یک شنبه 11 آذر 1386, 23:37 عصر
آقا بهروز مقاله خوبی بود حیف کف ادامه ندادی اما من یه سوال می کنم انشالا که با جواب این دوباره استارت بزنی.
سوالم اینه تویه مثلا dotnetnuke ما در حالت ویرایش صفحه میگیم که usercontrol1 رو به placeholder1 اضافه کن اینارو چطوری تو دیتابیس ذخیره می کنیم که وقتی صفحه خواست لود شه کنترل ها رو اضافه کنه.

Behrouz_Rad
یک شنبه 11 آذر 1386, 23:50 عصر
سوالت رو در یک تاپیک جدا در بخش ASP.NET مطرح کن.

meysampaknahad
شنبه 02 آبان 1388, 01:11 صبح
سلام
مقاله خوبی بود.
منتظر دومیش هستم.

battak
دوشنبه 17 خرداد 1389, 11:43 صبح
درسته این تاپیک قدیمی هستش، ولی چرا ادامه داده نشده!!!

suncity
شنبه 21 اسفند 1389, 08:11 صبح
سلام
میخوام یه یوزر کنترلی که داخل این پروژه نیست رو با کد نویسی توی فرم نمایش بدم
باید چیکار کنم؟
خیلی مهمه، تورو خودا کمک

ParsaNM
دوشنبه 12 اردیبهشت 1390, 13:30 عصر
دوست عزيز
خيلي مقاله جالبيه لطفا ادامه بده ...!

hashemt4
دوشنبه 26 اردیبهشت 1390, 19:53 عصر
سلام دوستان
کسی مطلبی در مورد ASP.Net Server Controls داره یا لینک آموزش؟

اگر کسی کار کرده لطفا ایمیل بزنه و راهنمایی کنه: Hajizadeh.ir@Gmail.com
ممنون

uthman
سه شنبه 24 اردیبهشت 1392, 11:35 صبح
سلام خدمت همه دوستان .اگه کسی لطف کنه آموزش user controler رو از صفر بگه ممنونش میشم .با یک مثال عملی؟