آژانس هواپیماییexchanging

آموزش : افزورن attribute به تگ های Master Page از درون Content Pageو در حال اجرا

شروع موضوع توسط amin_lili ‏4 آگوست 2007 در انجمن asp , ASP.NET

  1. amin_lili

    amin_lili کاربر تازه وارد

    تاریخ عضویت:
    ‏24 آپریل 2007
    نوشته ها:
    528
    تشکر شده:
    2
    محل سکونت:
    ای کاش آنجا ...
    سلام دوستان
    در این مقاله مختصر قصد دارم نحوه افزودن یک یا چند attribute یا خصوصیت به تگ های درون صفحه Master رو در زمان اجرا توضیح بدم .
    مشکلی که وجود داره اینه که ما از درون صفحات Content نمی تونیم به تگ های HTML موجود در صفحه Master به راحتی دسترسی داشته باشیم . برای حل این مشکل به طریق زیر عمل می کنیم .
    فرض کنید در وب سایتمون یک صفحه Master با نام MyMasterPage.master و یک صفحه Content با نام Default.aspx داریم .فرض بفرمایید در صفحه Master متنی با عنوان "تست نوع فونت این صفحه!" وجود داشته باشه . تگ <body> صفحه Master دارای attribute زیر هست :​
    کد:
    <body style="font-family:Arial">
    

    حال ما می خوایم از درون صفحه Default.aspx مقدار Font-family رو از Arial به Tahoma تغییر بدیم.
    برای این کار مراحل زیر را انجام می دیم :
    برای اینکه بتوانیم به تگ <body> دسترسی داشته باشیم لازمه خصوصیت سروری رو به اون افزوده کنیم :
    کد:
    <body id="MasterPageBodyTag" runat="server" style="font-family:Arial">
    

    توجه داشته باشید که id این تگ رو MasterPageBodyTag نام گذاری کردیم .

    برای اینکه براحتی بتونیم از درون CodeBehind به این تگ دسترسی داشته باشیم برای اون یک property از نوع public تعریف می کنیم . کد زیر را در CodeBehind صفحه MyMasterPage.master وارد می کنیم:
    کد:
    using System.Web.UI.HtmlControls;
    public HtmlGenericControl BodyTag
        {
            get
            {
                return MasterPageBodyTag;
            }
            set
            {
                MasterPageBodyTag = value;
            }
        }
    

    دقت کنید که MasterPageBodyTag از نوع System.Web.UI.HtmlControls.HtmlGenericControl هست. حالا برای اینکه ما بتونیم به خصوصیات تگ <body> که درون property فوق تعریف شده از درون صفحه Default.aspx دسترسی داشته باشیم لازمه که directive زیر را به ابتدای کدهای HTML صفحه Default.aspx اضافه کنیم .
    کد:
    <%@ MasterType TypeName="MyMasterPage" %>
    

    در واقع این کد به ما اجازه میده تا بتونیم به پراپرتی BodyTag موجود در صفحه Master دسترسی داشته باشیم.
    بنابراین در جایی دلخواه از صفحه Default.aspx (مثلا در Page_Load) کد زیر را وارد می کنیم :
    کد:
    Master.BodyTag.Attributes.Add("style", "font-family:Tahoma");
    

    حالا برنامه رو اجرا کنید . همان طور که خواهید دید متن "تست نوع فونت این صفحه!" به جای آنکه با فونت Arial نمایش داده شود با فونت Tahoma دیده خواهد شد . این مطلب برای کلیه attribute های موجود یک تگ قابل استفاده است .
    امیدوارم این مقاله آموزشی (هرچند مختصر) مورد قبول واقع شود.

    سوالی بود در خدمتم
    شاد باشید :happy: