سلام خدمت شما وب مسترای عزیز ، حالتون خوب هست؟ با اموزش امروز ما که در مورد direct ، همراه باشید. با مفهوم ریدارکت آشنا میشوید. در واقع Directive ها دستور العمل هایی هستند که با بهره گیری از آن ها می توان تنظیمات اختیاری و دلخواه خود را اعمال کرد، به عنوان مثال یک کنترل سفارشی ثبت (register) کرد و یا زبان صفحه را بدلخواه تنظیم کرد و غیره .. . این تنظیمات نحوه ی پردازش فرم های وب (.aspx) و صفحات user control (ascx.)را توسط .NET Framework تعیین می کنند.
دستور نگارش (سینتکس) تعریف یک directive به صورت زیر می باشد:
<%@ directive_name attribute=value [attribute=value] %>
در این مبحث تنها به شرح directive ها پرداخته و تعداد زیادی از آن ها را به صورت کاربردی به شما آموزش می دهیم.
Application Directive
Application directive ها خصیصه های (attribute) مختص برنامه را تعریف می کنند. این directive در قسمت فوقانی (بالای صفحه) فایل global.aspx جای می گیرد.
دستور نگارش Application directive به شرح زیر می باشد:
<%@ Application Language=”C#” %>
خصیصه های Application directive در جدول زیر با ذکر شرح برای شما فهرست شده:
Attributes (خصیصه)
شرح
Inherits
اسم کلاسی که به ارث بری از آن صورت می گیرد.
یک کلاس code-behind تعریف می کند که page از آن به ارث می برد.
Description
توصیف متنی (description) از صفحه ی مورد نظر ارائه می دهد. توجه داشته باشید که این مقدار توسط تجزیه گر (parser) و مترجم (compiler) ASP.NET کاملاً نادیده گرفته می شود.
Language
زبانی که در بلوک های کد بکار می رود را تعریف می کند. به عبارتی دیگر این خصیصه زبانی که هنگام ترجمه یا کامپایل rendering درون خطی و بلوک های تعریف کد استفاده می شود را مشخص می کند.
Assembly Directive
Directive نام برده یک assembly را به صفحه و برنامه ی کاربردی مورد نظر در زمان parse لینک (متصل) می کند. این directive ممکن است یا در فایل global.asax و یا در فایل page ظاهر شود)به عبارتی دیگر یک assembly توسط این directive حین کامپایل به فایل application ASP.NET لینک می شود و از این طریق تمامی کلاس های assembly و interface های آن را برای استفاده آماده می کند (از جمله آن یک صفحه ی وب، user control، master page، یا فایل global.asax می باشد).
دستور نگارش یک assembly directive به ترتیب زیر می باشد:
<%@ Assembly Name =”myassembly” %>
خصیصه های assembly directive در جدول زیر با ذکر شرح آن ها برای شما فهرست شده:
خصیصه
شرح
Name
اسم assembly که باید لینک شود (رشته ای که نشانگر اسم assembly می باشد که باید لینک شود).
Src
مسیر قرار گیری فایل منبع (source file) که باید لینک شده و به صورت پویا کامپایل شود.
Control Directive
خصیصه های ویژه ی user control ها (فایل های .ascx) را تعریف می کند که توسط تجزیه گر (parser) و مترجم (compiler) ASP.NET بکار گرفته می شود. directive ذکر شده تنها با user control ها بکار گرفته شده و در فایل های user control که دارای پسوند .ascx هستند ظاهر می شود.
دستور نگارش Control directive:
<%@ Control Language=”C#” EnableViewState=”false” %>
خصیصه های control directive به شرح زیر می باشند:
خصیصه
شرح
AutoEventWireup
مقدار بولی که مشخص می کند آیا رخداد ها باید به صورت خودکار به handler (اداره کننده ی رویداد ها) متصل شوند یا خیر.
ClassName
یک رشته که اسم کلاس (class name) کنترل را مشخص می کند. این اسم کلاس هنگامی که صفحه در خواست می شود، به صورت پویا کامپایل می گردد.
Debug
یک مقدار بولی که مشخص می کند آیا کنترل باید با debug symbol (نشانه ها اشکال زدایی) کامپایل شود یا خیر.
Description
یک توصیف مختصر متنی از کنترل مورد نظر ارائه می دهد. این مقدار توسط تجزیه گر (parser) asp.net نادیده گرفته می شود.
EnableViewState
مقدار بولی که که مشخص می کند آیا view state باید بین درخواست های یک صفحه (page request) ماندگار (حفظ) شود یا خیر.
Explicit
تعیین می کند آیا کنترل مورد نظر با استفاده از حالت (mode) option explicit زبان ویژوال بیسیک ترجمه (compile) شود یا خیر. مقدار true نشان می دهد که کنترل توسط ویژوال بیسیک به صورت صریح (explicit) کامپایل می شود و اینکه تمامی متغیرها باید توسط دستورهای Dim، Private، Public ، ReDim اعلان شوند.
Inherits
کلاسی که control page از آن به ارث می برد.
این خصیصه یک کلاس code-behind تعریف می کند که کنترل مورد نظر از آن به ارث می برد.
Language
زبان کد و اسکریپت را مشخص می کند.
Src
مسیر قرار گیری فایل منبع (source file) که دربردارنده ی کدی است که به کنترل مربوطه لینک (متصل) می باشد را مشخص می کند (به عبارتی دیگر، اسم فایل یا filename کلاس code-behind را مشخص می کند).
Strict
نشان می دهد که کنترل مورد نظر باید با استفاده از حالت یا مد option strict زبان ویژوال بیسیک ترجمه (کامپایل) شود. در صورتی که option strict فعال شده باشد مقدار true و در غیر این صورت مقدار false تخصیص می گردد. پیش فرض false می باشد.
Implements Directive
directive مزبور نشانگر این است که صفحه ی وب، صفحه ی الگو (master page) و یا صفحه ی user control باید رابط (interface) .NET Framework را پیاده سازی (implement) کنند.
دستور نگارش Implements directive:
<%@ Implements Interface=”interface_name” %>
Import Directive
این directive به صورت صریح یک فضای نام (namespace) را داخل فایل اپلیکیشن ASP.NET وارد (Import) کرده و از این طریق تمامی کلاس ها و رابط های (interface) فضای نام مذکور (namespace وارد شده) را در اختیار فایل مورد نظر قرار می دهد. چنانچه فضای نام در فایل global.asax مشخص شده باشد، در آن صورت فضای نام به کل برنامه ی کاربردی اعمال می شود. اگر فضای نام در یک صفحه از user control page قرار داده شود، در آن صورت فضای نام تنها به آن صفحه یا کنترل اعمال می گردد.
دستور نگارش import directive:
<%@ namespace=”System.Drawing” %>
Master Directive
Master directive در واقع یک صفحه را به عنوان صفحه ی الگو یا master page تعریف می کند، یا به عبارتی دیگر خصیصه هایی ویژه ی master page تعریف می کند که توسط تجزیه گر و کامپایلر ASP.NET مورد استفاده قرار می گیرد.
دستور نگارش:
<%@ MasterPage Language=”C#” AutoEventWireup=”true” CodeFile=”SiteMater.master.cs” Inherits=”SiteMaster” %>
MasterType Directive
این directive با تخصیص class name به خاصیت Master(Master property) یک صفحه آن را strongly-typed (وابسته ی زیاد به نوع) می کند) با استفاده از directive فوق می توان یک ارجاع strongly-typed به master page هنگامی که صفحه ی نام برده از طریق master property مورد دستیابی قرار گرفت، ایجاد کرد).
دستور نگارش:
<%@ MasterType attribute=”value”[attribute=”value” …] %>
OutputCache Directive
OutputCache Directiveسیاست های ذخیره سازی خرورجی در حافظه ی پنهان (output caching policies) یک صفحه یا user control را مدیریت و کنترل می کند.
دستور نگارش:
<%@ OutputCache Duration=”15″ VaryByParam=”None” %>
Page Directive
Directive ذکر شده خصیصه هایی ویژه ی page file (که دارای پسوند .aspxهستند) تعریف می کند که این خصیصه ها توسط تجزیه گر و کامپایلر ASP.NET بکار گرفته می شوند.
سینتکس:
<%@ Page Language=”C#” AutoEventWireup=”true” CodeFile=”Default.aspx.cs” Inherits=”_Default” Trace=”true” %>
خصیصه های page directive به شرح زیر می باشند:
خصیصه
شرح
AutoEventWireup
مقدار بولی که تعیین می کند آیا رخدادهای page به صورت خودکار به متدها bind شوند یا خیر؛ به عنوان مثال می توان به رخداد Page_Load اشاره کرد.
Buffer
مقدار بولی که HTTP response buffering را فعال یا غیر فعال می کند. تعیین می کند آیا خرورجی به طور موقت در حافظه ی میانجی ذخیره شود یا خیر.
ClassName
اسم کلاس صفحه را مشخص می کند.
رشته ای تعیین می کند که نشانگر اسم کلاس page می باشد. این رشته به هنگام درخواست (request) شدن صفحه به صورت پویا ترجمه می شود.
ClientTarget
این خصیصه user agent یا مرورگری که کنترل های سرور باید محتوا را برای آن اجرا کرده و نمایش دهند (render) را مشخص می کند.
CodeFile
این خصیصه اسم فایل code-behind را مشخص می کند. محل قرارگیری فایل code-behind ارجاع داده شده برای صفحه را مشخص می کند. این خصیصه به همراه خصیصه ی Inherits به منظور متصل کردن فایل منبع code-behind به یک صفحه ی وب بکار می رود.
Debug
یک مقدار بولی که مشخص می کند آیا کنترل باید با debug symbol (نشانه های اشکال زدایی) کامپایل شود یا خیر.
Description
توصیف متنی (description) از صفحه ی مورد نظر ارائه می دهد. توجه داشته باشید که این مقدار توسط تجزیه گر (parser) و مترجم (compiler) ASP.NET کاملاً نادیده گرفته می شود.
EnableSessionState
session-state را فعال، غیر فعال می کند. چنانچه session state فعال باشد مقدار true تخصیص می گردد. اگر امکان خواندن session state وجود داشته باشد ولی نتوان آن را اصلاح کرد مقدار ReadOnly اختصاص داده می شود و در غیر این صورت مقدار false.
EnableViewState
یک مقدار بولی که مشخص می کند آیا view state در صفحات درخواست (page request) حفظ شوند یا خیر.
ErrorPage
یک url به عنوان مقصد مشخص می کند که در صورت رخ دادن استثنا (exception) unhandled page به آن مسیر هدایت می شود یا تغییر مسیر صورت می گیرد.
Inherits
این خصیصه یک کلاس code-behind تعریف می کند که page آن را به ارث می برد. این کلاس می تواند هر کلاسی مشتق از کلاس Page باشد. خصیصه ی مزبور با خصیصه ی CodeFile بکار رفته که دربردارنده ی مسیر یا محل قرار گیری فایل منبع برای کلاس code-behind می باشد.
Language
زبان برنامه نویسی را تعیین می کند.
Src
محل (مسیر) قرار گیری source code که دربردارنده ی کد صفحه ی مورد نظر می باشد را تعیین می کند.
Trace
Tracing (رد گیری و ثبت وقایع کدها و اجرا ی برنامه) را فعال یا غیر فعال می کند.
TraceMode
مشخص می کند چگونه پیام های مربوط به tracing و اجرای برنامه (trace messages) نمایش داده شده و اینکه بر اساس زمان مرتب سازی شوند یا رده (category).
Transaction
این خصیصه مشخص می کند آیا قابلیت پشتیبانی از transaction (تراکنش ها) روی صفحه وجود دارد یا خیر.
ValidateRequest
یک مقدار بولی که تعیین می کند آیا تمام داده های ورودی بر اساس فهرستی از مقادیر hardcode شده اعتبار سنجی شوند یا خیر.
PreviousPageType Directive
PreviousPageType یک directive می باشد که با تخصیص یک کلاس به صفحه، آن را strongly-typed می کند.
دستور نگارش directive فوق به ترتیب زیر می باشد:
<%@ PreviousPageType attribute=”value”[attribute=”value” …] %>
Reference Directive
این directive مشخص می کند که یک صفحه یا user control دیگر باید کامپایل شده و به صفحه ی جاری لینک شود.
دستور نگارش:
<%@ Reference Page =”somepage.aspx” %>
Register Directive
به منظور ثبت (register) کردن کنترل های سمت سرور و user control های سفارشی بکار می رود (یک ارتباط یا اتصال بین پیشوند tag و کنترل سفارشی ایجاد می کند. از این طریق برنامه نویس قادر خواهد بود به کنترل های سفارشی در اپلیکیشن ASP.NET ارجاع کند.
دستور نگارش register directive:
<%@ Register Src=”~/footer.ascx” TagName=”footer” TagPrefix=”Tfooter” %>