Behrouz_Rad
یک شنبه 25 اردیبهشت 1384, 23:46 عصر
قسمت اول:
امکان ایجاد و استفاده از User Control ها یا همان کنترل های سفارشی ایجاد شده توسط کاربر، از قدیم الایام در زبان های برنامه نویسی وجود داشته.
تکنولوژیASP.NET که به صورت تعاملی با زبان های مبتنی بر پلت فرم دات نت استفاده میشود نیز از این قاعده مستثنا نیست.
<hr>
یکی از عوامل مهمی که در بالا بردن کارایی برنامه موثر است، امکان استفاده مجدد و بهنیه از عناصری است که به صورت مکرر در برنامه مورد استفاده قرار می گیرند.
اصطلاح Reuse: به معنای استفاده مجدد و تکنیکی است برای جلوگیری از ایجاد مجدد عناصری که مورد استفاده زیادی چه در برنامه برنامه نویس و چه در برنامه های دیگر دارند.
تکنیک Reuse، نیاز به تکرار مجدد کدها را در برنامه از بین می برد.
<hr>
:User Controls
تکنیک Reuse در ASP کلاسیک، با اضافه کردن دستور INCLUDE# به ابتدای صفحه میسر بود.
<!-- #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 زیر به منظور ایجاد تعدادی لینک به صفحات مختلف ایجاد شده است:
<%@ Control Language="vb" %>
<table cellpadding="0" cellspacing="0">
<tr>
<td valign="top">
<strong>Links:</strong><br/>
<hr width='80%'>
<a href="myPage.aspx"
onmouseover="img1.src='myImage1.jpg';"
onmouseout="img1.src='myImage2.jpg';">
<img border='0' src='myImage2.jpg' id='img1' name='img1'></a>
<a href="myPage.aspx"
onmouseover="img1.src='myImage1.jpg';"
onmouseout="img1.src='myIamge2.jpg';">my Link</a>
<hr width='80%'>
</td>
</tr>
</table>
در مثال فوق، به استثنای دایرکتیو Control@ (که می تواند استفاده نشود)، بقیه کدها، کدهای شامل تگ های HTML و اسکریپت های سمت کلاینت هستند (به منظور سویچ عکس)
نکته: نقش دایرکتیو Control در User Control دقیقا همانند نقش دایرکتیو Page در صفحات aspx است
User Control ها به دو طریق قابلیت اضافه شدن به وب فرم را دارند.
1) با شامل کردن دایرکتیو Register به ابتدای صفحه aspx
2) با استفاده از متد LoadControl کلاس TemplateControl
مثال 2:
مثال بعد، ازدایرکتیو Register به منظور استفاده از User Control مثال 1 در وب فرم استفاده می کند.
<%@ Page Language="vb" %>
<%@ Register TagPrefix="myControl" TagName="myLinks" Src="myUserControlFileName.ascx" %>
<html>
<head>
</head>
<body>
<table border="1" width="100%" cellpadding="20" cellspacing="0">
<tr>
<td align="center" width="150">
<img src="myImage.jpg"/>
</td>
<td align="center">
<h1>User Control Page<h1>
</td>
</tr>
<tr>
<td width="150">
<myControl:myLinks runat="server"/>
</td>
<td>
Contents
<br/><br/><br/><br/><br/><br/><br/><br/><br/>
</td>
</tr>
</table>
</body>
</html>
در مثال فوق با تعریفی که از User Control در دایرکتیو Register آمده، کامپایلر ASP.NET به دنبال تگ های <myControl:myLinks> با خاصیت سمت سروری (runat="server") در صفحه می گردد و در صورت پیدا شدن، پس از پردازش User Control، خروجی پردازش را در جایی که User Control بر روی وب فرم قرار داده شده، نمایش می دهد.
مثال 3:
در مثال بعد، طریقه استفاده پویا (Dynamic) از User Control با استفاده از متد LoadControl نشان داده شده است.
نکته: بهتر است User Control به یک کنترل PlaceHolder اضافه شود. در این صورت، تعیین مکان دقیق قرارگیری User Control بر روی وب فرم به آسانی میسر می شود.
<%@ Page Language="vb" %>
<html>
<head>
<script runat="server">
Sub Page_Load( )
PlaceHolder.Controls.Add(LoadControl("myUserControlFileName.ascx"))
End Sub
</script>
</head>
<body>
<table border="1" width="100%" cellpadding="20" cellspacing="0">
<tr>
<td align="center" width="150">
<img src="myImage.jpg"/>
</td>
<td align="center">
<h1>User Control Page<h1>
</td>
</tr>
<tr>
<td width="150">
<asp:placeholder id="PlaceHolder" runat="server"/>
</td>
<td>
Contents
<br/><br/><br/><br/><br/><br/><br/><br/><br/>
</td>
</tr>
</table>
</body>
</html>
در قسمت دوم مقاله، توضیحات کاملتری در مورد User Control ها و ایجاد خواص و متدهای سفارشی آنها داده خواهد شد.
امکان ایجاد و استفاده از User Control ها یا همان کنترل های سفارشی ایجاد شده توسط کاربر، از قدیم الایام در زبان های برنامه نویسی وجود داشته.
تکنولوژیASP.NET که به صورت تعاملی با زبان های مبتنی بر پلت فرم دات نت استفاده میشود نیز از این قاعده مستثنا نیست.
<hr>
یکی از عوامل مهمی که در بالا بردن کارایی برنامه موثر است، امکان استفاده مجدد و بهنیه از عناصری است که به صورت مکرر در برنامه مورد استفاده قرار می گیرند.
اصطلاح Reuse: به معنای استفاده مجدد و تکنیکی است برای جلوگیری از ایجاد مجدد عناصری که مورد استفاده زیادی چه در برنامه برنامه نویس و چه در برنامه های دیگر دارند.
تکنیک Reuse، نیاز به تکرار مجدد کدها را در برنامه از بین می برد.
<hr>
:User Controls
تکنیک Reuse در ASP کلاسیک، با اضافه کردن دستور INCLUDE# به ابتدای صفحه میسر بود.
<!-- #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 زیر به منظور ایجاد تعدادی لینک به صفحات مختلف ایجاد شده است:
<%@ Control Language="vb" %>
<table cellpadding="0" cellspacing="0">
<tr>
<td valign="top">
<strong>Links:</strong><br/>
<hr width='80%'>
<a href="myPage.aspx"
onmouseover="img1.src='myImage1.jpg';"
onmouseout="img1.src='myImage2.jpg';">
<img border='0' src='myImage2.jpg' id='img1' name='img1'></a>
<a href="myPage.aspx"
onmouseover="img1.src='myImage1.jpg';"
onmouseout="img1.src='myIamge2.jpg';">my Link</a>
<hr width='80%'>
</td>
</tr>
</table>
در مثال فوق، به استثنای دایرکتیو Control@ (که می تواند استفاده نشود)، بقیه کدها، کدهای شامل تگ های HTML و اسکریپت های سمت کلاینت هستند (به منظور سویچ عکس)
نکته: نقش دایرکتیو Control در User Control دقیقا همانند نقش دایرکتیو Page در صفحات aspx است
User Control ها به دو طریق قابلیت اضافه شدن به وب فرم را دارند.
1) با شامل کردن دایرکتیو Register به ابتدای صفحه aspx
2) با استفاده از متد LoadControl کلاس TemplateControl
مثال 2:
مثال بعد، ازدایرکتیو Register به منظور استفاده از User Control مثال 1 در وب فرم استفاده می کند.
<%@ Page Language="vb" %>
<%@ Register TagPrefix="myControl" TagName="myLinks" Src="myUserControlFileName.ascx" %>
<html>
<head>
</head>
<body>
<table border="1" width="100%" cellpadding="20" cellspacing="0">
<tr>
<td align="center" width="150">
<img src="myImage.jpg"/>
</td>
<td align="center">
<h1>User Control Page<h1>
</td>
</tr>
<tr>
<td width="150">
<myControl:myLinks runat="server"/>
</td>
<td>
Contents
<br/><br/><br/><br/><br/><br/><br/><br/><br/>
</td>
</tr>
</table>
</body>
</html>
در مثال فوق با تعریفی که از User Control در دایرکتیو Register آمده، کامپایلر ASP.NET به دنبال تگ های <myControl:myLinks> با خاصیت سمت سروری (runat="server") در صفحه می گردد و در صورت پیدا شدن، پس از پردازش User Control، خروجی پردازش را در جایی که User Control بر روی وب فرم قرار داده شده، نمایش می دهد.
مثال 3:
در مثال بعد، طریقه استفاده پویا (Dynamic) از User Control با استفاده از متد LoadControl نشان داده شده است.
نکته: بهتر است User Control به یک کنترل PlaceHolder اضافه شود. در این صورت، تعیین مکان دقیق قرارگیری User Control بر روی وب فرم به آسانی میسر می شود.
<%@ Page Language="vb" %>
<html>
<head>
<script runat="server">
Sub Page_Load( )
PlaceHolder.Controls.Add(LoadControl("myUserControlFileName.ascx"))
End Sub
</script>
</head>
<body>
<table border="1" width="100%" cellpadding="20" cellspacing="0">
<tr>
<td align="center" width="150">
<img src="myImage.jpg"/>
</td>
<td align="center">
<h1>User Control Page<h1>
</td>
</tr>
<tr>
<td width="150">
<asp:placeholder id="PlaceHolder" runat="server"/>
</td>
<td>
Contents
<br/><br/><br/><br/><br/><br/><br/><br/><br/>
</td>
</tr>
</table>
</body>
</html>
در قسمت دوم مقاله، توضیحات کاملتری در مورد User Control ها و ایجاد خواص و متدهای سفارشی آنها داده خواهد شد.