سلام خدمت شما وب مسترای عزیز ،  حالتون خوب هست؟ با اموزش امروز ما که در مورد 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” %>