فهرست مطالب صفحه اصلی در ASP.NET )در یک نگاه(...2 نحوه کار صفحه اصل ی......2 فواید صفح ای اصلی...2 هکاى گ ذار ذ هحت ا تا قاتل یت جا گیشیىی...3 صفح ای هحت ا... 4 استفاده از صفحه های اصلی......6 رفتار زمان اجرای یک صفحه اصلی......6 صفحه اصلی و مسیر صفحه محتوا...... 8 ارجاع دادى ت ه اتغ خارجی... 9 ک تزل ای سز ر...9 گ دیز ػ اصز...10 صفحه اصلی و تم ها...... 10 حوزه صفحه اصل ی...... 10
صفح اصلی صفح اصلی در ASP.NET i )در یک گا ( ت ضوا اهکاى اضاف و دى یک چارچ ب تزای سایت را هی د ذ. تا استفاد اس یک صفح اصلی ایي اهکاى را خ ا یذ داضت ک تزای کلی یا تزخی اس صفح ای تز اه یک چارچ ب استا ذارد ت ی واییذ. پس اس آى فقط هحت یات صفح ای را ساخت طزاحی هی ک یذ. قتی ک کارتز درخ است یک صفح را هی ک ذ هحت یات صفح وزا تا صفح اصلی ادغام ضذ یک صفح کاهل را تطکیل هی د ذ سپس تزای کارتز ت ػ اى یک صفح ارسال هی گزدد. ح کار صفح اصلی صفح اصلی اقؼا د تک است یکی خ د صفح اصلی دیگزی هحت یات صفح. زچ ذ ک اهکاى تزکیة صفح اصلی ا ت ضکل ت در ت یش ست. صفح ای اصلی.master )تزای هثال )MySite.master تا صفح اصلی یک فایل asp.net تا پس ذ چارچ تی است ک اس قثل ت سط تگ ای html هت ى ػ اصز سز ری ایجاد ضذ است. صفح ای اصلی تا ػالهت @master در اتتذای تؼزیف فایل هؼزفی هی ض ذ ک تؼذا تص رت هستقین تا @page جایگشیي هی گزدد در تیج یک صفح.aspx را ایجاد هی وایذ. ت هثال ایی ک در سیز آهذ است دقت واییذ: <%@ Master Language="" %> در تؼزیف @master هی ت ا یذ اس تؼزیفات دیگزی ها ذ @control... استفاد واییذ. در هثال سیز تؼزف master page حا ی هؼزفی فایل کذ هؼزفی کالسی تزای صفح است.
<%@ Master Language="" CodeFile="MasterPage.master.cs" Inherits="MasterPage" %> تایذ اضاف وایین ک یک صفح اصلی وچ یي هی ت ا ذ ضاهل و ػ اصز اتتذایی یک صفح ها ذ form تاضذ. تزای هثال در یک صفح اصلی هوکي است تخ ا یذ اس یک جذ ل html, head html تزای ساخت چارچ ب ه رد ظز یک img تزای ػالهت تجاری ضزکت یک هتي ساد تزای قا ى کپی رایت ک تزل ای سز ر ت ػ اى لی ک ای سایت خ د استفاد واییذ. ضوا هی ت ا یذ اس ز ػ صز HTML ز ػ صز ASP.NET ت ػ اى قسوتی اس صفح اصلی استفاد واییذ. هکاى گ ذار ذ هحت ا ii تا قاتلیت جایگشی ی ت اضاف هت ى ثاتت ک تزل ایی ک در و صفح ا دیذ هی ض ذ یک صفح اصلی هی ت ا ذ ضاهل چ ذیي ک تزل ContentPlaceHolder تاضذ. ایي ک تزل ای گ ذار ذ هحذ د ای را تؼزیف هی ک ذ ک هحت یات قاتل جایگشیي تایذ در آ جا دیذ ض ذ. هحت ا قاتل جایگشیي در صفح ا تؼزیف هی ض ذ. پس اس تؼزیف ک تزل ای ContentPlaceHolder یک صفح اصلی تایذ ها ذ سیز ایجاد ض د: <%@ Master Language="" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/tr/xhtml11/dtd/xhtml11.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" > <head runat="server" > <title>master page title</title> </head> <body> <form id="form1" runat="server">
<table> <tr> <td><asp:contentplaceholder id="main" runat="server" /></td> <td><asp:contentplaceholder id="footer" runat="server" /></td> </tr> </table> </form> </body> </html> صفح ای هحت ا iii ضوا هحت ا صفح ا را ت سط ک تزل ای گ ذار ذ هکاى تا ایجاد صفح ای هستقل تزای صفح ا اصلی تؼزیف هی ک یذ ک ز کذام یک صفح ASP.NET است. )فایل ای.aspx فایل ای اختیاری )code-behind ک ت یک صفح اصلی هزتثط ضذ ا ذ.( ایي اتصال در صفح هحت یی دارای را وای @Page تا استفاد اس خص صیت MasterPageFile ص رت هی گیزد. تزای هثال یک صفح هحت ا تایذ را و ای ک ذ. @Page را دارا تاضذ تا ت صفح Master1.master اتصال تزقزار <%@ Page Language="" MasterPageFile="~/MasterPages/Master1.master" Title="Content Page"%> در صفح هحت ا ضوا تایذ یک ک تزل هحت ا ایجا کزد آى را ت ک تزل ContentPlaceHolder صفح اصلی ارتثاط د یذ. تزای هثال صفح اصلی تایذ دارای Footer تاضذ. در صفح هحت ا ضوا هی ت ا یذ د ک تزل گ ذار ذ هکاى تا اه ای Main Main اضار Content ایجاد واییذ. یکی اس آ ا ت ک تزل ContentPlaceHolder تا ام و د دیگزی ت ک تزل هی ک ذ: ContentPlaceHolder تا ام Footer وا ذ ضکل سیز اضار
پس اس ساخت ک تزل ای Content ضوا تایذ هتي ک تزل ا را ت آى اضاف ک یذ. در صفح هحت ا ز چیشی وی ت ا ذ داخل ک تزل ای Content قزار تگیزد )هگز تالک ای کذ سوت سز ر( ایي تاػث ت لیذ خطا خ ا ذ ضذ. ضوا هی ت ا یذ ز کاری را ک در یک صفح ASP.NET ا جام هی دادیذ در یک صفح هحت ا یش ا جام د یذ. تزای هثال هی ت ا یذ هحت یی ه رد ظز را تزای ک تزل Content تا استفاد اس ک تزل ای سز ری دست رات تا ک اطالػاتی یا دیگز هکا یشه ای پ یا ایجاد واییذ. یک صفح هحت ا تایذ ضثی ت دست رات سیز تاضذ: <% @ Page Language="" MasterPageFile="~/Master.master" Title="Content Page 1" %> <asp:content ID="Content1" ContentPlaceHolderID="Main" Runat="Server"> Main content. </asp:content> <asp:content ID="Content2" ContentPlaceHolderID="Footer" Runat="Server" > Footer content. </asp:content>
را وای @Page صفح هحت ا را ت صفح اصلی خاصی اتصال هی د ذ. یک ػ اى تزای صفح ک هی خ ا ذ تا صفح اصلی ادغام ض د را تؼزیف هی ک ذ. دقت ض د ک صفح هحت ا ضاهل یچ دست ر html خارج اس ک تزل ای Content ثاضذ. )صفح اصلی تایذ ػ صز head را تا خص صیت runat= server دارا تاضذ ک ایي هی ت ا ذ تاػث ت ظین ادغام در سهاى اجزا ض د.( ضوا هی ت ا یذ چ ذیي صفح اصلی را تا چارچ ت ای هختلفی تزای قسوت ای هختلف سایت تؼزیف واییذ. دست ای هختلف صفح ای هحت ا را تزای ز صفح اصلی. ف ایذ استفاد اس صفح ای اصلی صفح ای اصلی ایي اهکاى را فزا ن هی ک ذ ک تز اه یساى کذ ای قذیوی ایجاد ضذ را تا کپی هت ى ک تزل ا استفاد اس frameset ا استفاد اس فایل ای include تزای ػ اصز هطتزک استفاد اس ک تزل ای asp.net کارتز غیز ه رد استفاد قزار د ذ. ف ایذ استفاد اس صفح ای اصلی ضاهل ه ارد سیز است: آ ا ت ضوا اجاس هتوزکش کزدى اهکا ات هطتزک صفح ا را هی د ذ ک در ایي حالت هی ت ا یذ تز سرسا ی سایت را فقط تا اػوال تغییزات در یک هکاى ا جام د یذ. آ ا ت ها اهکاى ساخت آساى هجو ػ ای اس ک تزل ا کذ ا را هی د ذ ک تیج آى را هی ت اى ت هجو ػ ای اس صفح ا اػوال و د. تزای هثال ضوا هی ت ا یذ اس ک تزل ا در صفح ای اصلی تزای ساخت ه استفاد ک یذ ک ت و صفح ا اػوال هی ض د. آ ا یک هذل ضی گزا را فزا ن هی ک ذ ت ضوا اجاس ت ظین دلخ ا صفح اصلی اس ر ی یک صفح هحت ا ه حصزتفزد را هی د ىد. رفتار سهاى اجزای یک صفح اصلی در سهاى اجزا صفح ای اصلی در ه ارد سیز تتزتیة قزار هی گیز ذ: کارتز درخ است یک صفح را تا تایپ آدرس صفح هحت ا هی د ذ. سها ی ک صفح تذست هی آیذ را وای @Page خ ا ذ هی ض د اگز را وا ت یک صفح اصلی اضار ک ذ صفح اصلی یش خ ا ذ خ ا ذ ضذ. اگز ایي ا لیي هزتث درخ است صفح تاضذ ز د صفح کاهپایل خ ا ذ ضذ.
صفح اصلی تا هحت ا تز س ضذ در صفح هحت ا ادغام هی ض د. هحت ا ه حصزتفزد ک تزل ادغام هی ض د. Content تا ک تزل ContentPlaceHolder در صفح اصلی صفح ادغام ضذ تذست آهذ تزای هز رگز تزجو هی ض د. فزآی ذ ف ق در دیاگزام سیز قاتل دیذى است: اس دیذگا کارتز صفح اصلی صفح هحت ا تزکیة ضذ یک صفح ست ذ. آدرس صفح هزت ط ت صفح هحت ا است. اس دیذگا تز اه یس د صفح در قص ظز ف هجشا تزای ک تزل ای ضاى ػول هی ک ذ. صفح هحت ا قص ظزف را تزای صفح اصلی دارد. ز چ ذ ضوا هی ت ا یذ ت ػ صز ای ػو هی صفح اصلی )کذ( در صفح هحت ا ارجاع داضت تاضیذ. کت ای ک صفح اصلی ت ػ اى تخطی اس صفح هحت ا تثذیل هی ض د. در ایي حالت صفح اصلی قطی ها ذ قص ک تزل ای کارتز ت ػ اى فزس ذ صفح هحت ا ت ػ اى ظزف در صفح ای ک قزار گزفت است را دارد. ک در ایي حالت صفح اصلی ظزفی است تزای و ک تزل ای سوت سز ر ک تزای هز رگز تزجو هی ض ذ. ک تزل درختی تزای یک صفح اصلی هحت ا ادغام ضذ ت کل سیز ضثی خ ا ذ ت د:
Pseudo code Page Master Page (Master page markup and controls) ContentPlaceHolder Content page markup and server controls (Master page markup and controls) ContentPlaceHolder Content page markup and server controls (Master page markup and controls) ایي یک دیاگزام ساد ضذ است. اگز صفح هحت ا دارای ک تزل Content ثاضذ صفح اصلی تایذ دارای ک تزل ا کذ در ک تزل ای ContentPlaceHolder تاضذ. در حالت ػو هی ایي ساختار تاثیزی تز ح ساخت صفح ضوا یا تز اه ضوا خ ا ذ داضت. در تسیاری حاالت اگز ضوا خص صیت Page-Wide صفح اصلی را ت ظین کزد تاضیذ هی ت ا ذ تز ح رفتار صفح هحت ا تاثیز تگذارد سیزا صفح اصلی یک ک تزل تست تزای ک تزل ای داخل آى است. تزای هثال اگز خص صیت EnableViewState در صفح هحت ا true ا تخاب ضذ تاضذ اها ایي خص صیت در صفح اصلی هقذار false ا تخاب ضذ تاضذ view state غیز فؼال خ ا ذ ضذ سیزا ت ظیوات صفح اصلی دارای ا ل یت تیطتزی است. صفح اصلی هسیز صفح هحت ا قتی ک یک صفح هحت ا درخ است هی ض د هحت ا تا صفح اصلی تزکیة هی ض د صفح در قسوت صفح هحت ا اجزا هی ض د. تزای هثال اگز ضوا خص صیت CurrentExecutionFilePath اس ضی HttpRequest تگیزیذ چ در کذ صفح اصلی یا در صفح هحت ا هسیز صفح هحت ا را وایص هی د ذ.
صفح اصلی صفح هحت ا هی ت ا ذ در یک پ ض قزار گزفت تاض ذ. تا استفاد اس خص صیت MasterPageFile در را وای دست ر @Page یک فایل.master تا صفح هحت ا ت سط ASP.NET ر ذر ضذ تص رت یک صفح ر ذر ضذ هجشا در هی آیذ. ارجاع دادى ت ه اتغ خارجی ز د ی صفح ای اصلی هحت ا هی ت ا ذ دارای ػ اصز ک تزل ایی تاض ذ ک ت ه اتغ خارجی ارجاع داد ا ذ. تزای هثال ز د هی ت ا ذ دارای یک ک تزل تص یز ک ت یک فایل تص یزی ارجاع ضذ یا یک پی ذ تزای ارجاع ت یک صفح دیگز تاض ذ. سهی تزای هحت ا تزکیة ضذ تا صفح اصلی صفح هحت ا است. ایي هی ت ا ذ تز ی ح هطخص و دى URL ا تزای ه اتغ تاثیز گذار تاضذ ها ذ فایل ای تص یزی صفح ای هقصذ تزای پی ذ ا. ک تزل ای سز ر ASP.NET تص رت پ یا آدرس ای URL ک تزل ای سز ری صفح اصلی ک ت ه اتغ خارجی ارجاع هی ک ذ را تغییز هی د ذ. تزای هثال هوکي است ضوا یک ک تزل تص یز را در صفح اصلی قزار د یذ خص صیت ImageUrl را سثت ت صفح اصلی ت ظین ک یذ. در سهاى اجزا ASP.NET هسیز را سثت ت صفح هحت ا اصالح کزد آدرس اصالح ضذ ه رد استفاد قزار هی گیزد. ASP.NET هی ت ا ذ آدرس ای URL را در ضزایط سیز اصالح واییذ: URL خص صیت یک ک تزل سز ری ASP.NET تاضذ خص صیت آدرس تص رت داخلی در ک تزل تؼییي ضذ تاضذ. )خص صیت ت سط صفت UrlPropertyAttribute ػالهت گذاری ضذ است.( در اصطالح ػولی خص صی ای ک تزل ای سز ری ASP.NET ک ػو ها تزای ارجاع ت ه اتغ خارجی استفاد ضذ ا ذ ت ایي ر ش ػالهت گذاری ضذ ا ذ.
دیگز ػ اصز ASP.NET وی ت ا ذ آدرس URL ک تزل ای غیز سز ری را تغییز د ذ. تزای هثال اگز ضوا اس ػ صز img در یک صفح اصلی استفاد کزد تاضیذ صفت src را تا یک URL ت ظین کزد تاضیذ ASP.NET آدرس را تغییز خ ا ذ داد. در ایي حالت آدرس در سهی صفح هحت ا ایجاد هی ض د. در حالت کلی سها ی ک تا یک ػ صز در صفح اصلی کار هی ض د ت تز است ک ضوا اس ک تزل ای سز ری image استفاد استفاد ک یذ. تزای هثال در ص رت استفاد اس ػ صز img هی ت ا یذ اس ک تزل سز ر ک یذ. در ایي حالت ASP.NET هی ت ا ذ آدرس URL را تذرستی تساسد. iv صفح اصلی تن ا ضوا وی ت ا یذ تن ا را تط ر هستقین ت صفح ای اصلی اػوال ک یذ. اگز صفت theme را ت را وای @master اضاف ک یذ در سهاى اجزا یک خطا ایجاد خ ا ذ ضذ. زچ ذ ک تن ا ت صفح ای اصلی در ه قؼیت ای سیز اػوال هی ض ذ: اگز یک تن در صفح هحت ا تؼزیف ضذ تاضذ تن هحت ا صفح پس اس تزکیة تا صفح اصلی ت صفح اصلی یش اػوال هی ض د. اگز تزای کل سایت یک تن تؼزیف ضذ تاضذ. ح س صفح اصلی ضوا هی ت ا یذ صفح هحت ا را ت صفح اصلی در س سطح اضاف ک یذ: در سطح صفح : ضوا هی ت ا یذ اس را وای صفح در ز صفح هحت ا تزای اتصال ت صفح اصلی ها ذ هثال سیز استفاد ک یذ: <%@ Page Language="" MasterPageFile="MySite.Master %>
در سطح تز اه : تا ساخت ت ظیوات در ػ صز pages فایل ت ظیوات تز اه ( هی ت ا یذ تص رت ات هاتیک صفح اصلی را ت و صفح ای ظز هی ت ا ذ ضثی هثال سیز تاضذ: )Web.Config ).aspx ( اضاف ک یذ. ػ صز ه رد <pages masterpagefile="mysite.master" /> اگز اس استزاتژی استفاد ضذ تاضذ و صفح ای asp.net در تز اه ک دارای ک تزل Content تاضذ تا صفح اصلی هطخص ضذ ادغام هی ض ذ. )اگز صفح ک تزل Content ثاضذ صفح اصلی ت آى اػوال وی ض د( asp.net دارای در سطح پ ض : ایي استزاتژی ها ذ اتصال در سطح تز اه است ت جش ای ک ضوا ت ظیواتی را فقط در فایل Web.Config در یک پ ض قزار داد تاضیذ. اتصال صفح اصلی هحت ا صفح فقط در ایي پ ض اػوال هی ض د. Master page i ContentPlaceHolder ii Content Page iii Theme iv