تحت شرایطی بعضاً ممکن است به تغییر یک Master Page بصورت پویا نیاز پیدا کنیم. مثلا” ممکن است در یک وب سایت برای موضوعات مختلف طرح بندی سایت تغییر کند. بدیهی است که برای این منظور بسته به نیازمان Master Page های مختلفی را در ابتدای کار می بایست ایجاد کنیم. در این مقاله می آموزید که چگونه می توان بصورت پویا یک Master Page را با دیگری جایگزین کرد.
برای این منظور Master Page دوم را به وب سایتمان که در قسمت اول مقاله ایجاد کردیم اضافه کرده و یک کنترل button برای سوئیچ کردن بین Master Page ها اضافه می کنیم. از آنجا که Master Page دوم بسیار شبیه اولی می باشد لذا تنها کافیست یک کپی از آن تهیه کرده و برای تمایز، رنگ پس زمینه آن را تغییر دهیم.
برای این منظور مراحل زیر را دنبال کنید:
١- در Solution Explorer بر روی Master1.master راست کلیک کرده و گزینه کپی را انتخاب کنید.
٢- بر روی نام وب سایت راست کلیک کرده و گزینه paste را انتخاب کنید.
٣- Master Page کپی شده را به Master2.master تغییر نام دهید.
۴- فایل Master2.master را در حالت Html باز کرده و در قسمت Master1 ،@Master را به Master2 تغییر دهید.
Master Language=”C#” CompileWith=”Master2.master.cs” ClassName=”Master2_master@”
۵- به حالت Design View بروید.
۶- در پنجره properties از لیست باز شو که در قسمت بالای این پنجره قرار دارد گزینه DOCUMENT را انتخاب کنید.
۷- مقدار BgColor را به دلخواه تغییر دهید.
۸- Master Page جدید را در حالت سورس کد باز کنید و نام کلاس را از Master1_master به Master2_master تغییر دهید.
برای اضافه کردن یک button جهت تغییر پویا Master Page ها مطابق زیر عمل کنید:
١- یک کنترل از نوع LinkButton به پایین صفحه Master2.master اضافه کرده و برای آن یک نام انتخاب کنیدمثلا” “Change to MP1”
٢- بر روی button دو بار کلیک کنید تا تابع رویداد کلیک آن ایجاد شود. سپس کد زیر را به آن اضافه کنید.
void LinkButton1_Click(object sender, EventArgs e)
{
Session(“masterpage”) = “MasterPage1.master”;
Response.Redirect(Request.Url.ToString());
}
کد فوق موجب بار گزاری نام Master Page اول در Session شده و سپس صفحه جاری دوباره فراخوانی می شود.
٣- صفحه Master1.master را باز کنید و یک کنترل LinkButton مطابق مراحل فوق به آن اضافه کنید و نوشته روی آن را “Change to MP2” قرار دهید.
۴- در تابع مربوط به رویداد کلیک آن کد زیر را اضافه کنید.
void LinkButton1_Click(object sender, EventArgs e)
{
Session(“masterpage”) = “MasterPage2.master”;
Response.Redirect(Request.Url.ToString());
}
۵- صفحه About.aspx را در حالت سورس کد باز کنید.
۶- تابع Page_PreInit را اضافه کرده و کد زیر را در آن بنویسید.
کد فوق باعث جایگزین کردن محتویات [Session[“masterpage” با مقدار مشخصه Me.MasterPageFile می شود. این کار می بایست حتما” در تابع Page_PreInit صورت گیرد. زیرا در یک WebForm قبل از هرگونه مقدار دهی اولیه می بایست تکلیف Master Page آن مشخص شود. و بهترین گزینه تابع Page_PreInit می باشد. لذا قرار دادن این کد در توابعی مثل Page_Init و Page_Load که بعد از تابع Page_PreInit فراخوانده می شوند، تأثیر گذار نخواهد بود.
حال بعد از اعمال مراحل فوق حاصل کار را مطابق زیر امحان می کنیم:
١- CTRL+F5 را فشار دهید تا صفحه home در browser نمایان شود.
٢- به صفحه About رفته و بر روی Chage to MP2 کلیک کنید. مشاهده می کنید که صفحه About با Master2.master باز خواهد شد.
٣- بر روی Change to MP1 کلیک کنید. می بینید که اینبار صفحه About با Master1.master باز می شود.
مراحل فوق یک مثال بسیار ساده برای تغییر Master Page ها بصورت پویا را شامل می شدند. امروزه بعضی از وب سایتها مثل MSN.com این قابلیت را برای کاربران عضو مهیا ساخته اند که بتوانند طرح بندی صفحه مربوط به خود را بصورت پویا براحتی تغییر دهند. مسلماً استفاده از Master Page ها برای این منظور کار را بسیار ساده و سریع خواهد نمود.
دیدگاه خود را بیان کنید.
باید وارد سایت شده باشید برای دیدگاه دادن