اموزش ASP

آموزش THEME و SKIN :


آموزش گرافیک در ASP.NET


theme، مجموعه ای از تنظیمات پراپرتی است که به شما اجازه می دهد ظاهر صفحات و کنترل ها را تعریف کنید، و آن ظاهر را در صفحات web application، در کل یک web application، یا کل web applicationها روی سرور اعمال کنید.

تم ها و اسکین های کنترل

تم ها از یک سری از عنصرها تشکیل شده اند: اسکین ها، CSS، تصاویر، و منابع دیگر. یک تم حداقل حاوی اسکین ها خواهد بود. تمها در دایرکتوری های ویژه ای در وب سایت یا روی سرور وب شما تعریف می شوند.

اسکین ها

یک فایل اسکین ، دارای اکتنشن .skin و حاوی تنظیمات پراپرتی برای کنترل های منفرد از قبیل Button، Label، Textbox، یا کنترل های Calendar است. تنظیمات Control skin، شبیه control markup هستند، اما فقط حاوی پراپرتی هایی است که می خواهید به عنوان بخشی از تم تنظیم کنید. مثلاً، کد زیر، یک control skin برای کنترل Button است:

<asp:button runat="server" BackColor="lightblue" ForeColor="black" />

 

شما فایل های .skin را در پوشه Theme ایجاد کردید. یک فایل .skin ممکن است حاوی یک یا چند control skin برای یک یا چند control type باشد. می توانید اسکین هایی را در فایلی جدا برای هر کنترل تعریف کنید یا همه اسکین ها را برای یک تم در فایلی واحد تعریف کنید.

دو نوع control skin وجود دارد: اسکین های پیش فرض و اسکین های نام گذاری شده:

  • اسکین پیش فرض: هنگامی که تم به یک صفحه اعمال می شود،بطور اتوماتیک به همه کنترل های یک type، اعمال می شود. یک control skin، یک اسکین پیش فرض است، اگر دارای اتریبیوت SkinID نباشد. مثلاً، اگر یک اسکین پیش فرض برای کنترل Calendar ایجاد کنید، control skin به همه کنترل های Calendar که روی صفحه ای که از تم استفاده می کنند اعمال می شود. (اسکین های پیش فرض، دقیقاً بوسیله control type مچ می شوند، بطوری که اسکین کنترل Button به همه کتنرل های Button اعمال می شود، اما به کنترل های LinkButton یا کنترل هایی که از Button object مشتق می شوند اعمال نمی شود.)
  • اسکین نام گذاری شده: کنترلی با مجموعه پراپرتی های SkinID است. اسکین های نام گذاری شده بطور اتوماتیک به کنتنرل هایی توسط type اعمال نمی شوند. در عوض، اسکین نام گذاری شده را مستقیماً به کنترلی توسط تنظیم پراپرتی SkinID کنترل اعمال می کنید. ایجاد اسکین های نام گذاری شده به شما اجازه می دهند اسکین های مختلفی را برای instanceهای مختلف همان کنترل در یک برنامه تنظیم کنید.

 

CSS

یک تم می تواند حاوی فایل .css نیز باشد. وقتی شما یک فایل .css در پوشه تم قرار می دهید، style sheet بطور اتوماتیک بعنوان بخشی از تم اعمال می شود. شما با استفاده از اکتنشن .css در پوشه تم ، یک style sheet تعریف می کنید.

Theme Graphics و منابع دیگر

همچنین این تم ها ممکن است حاوی graphics و منابع دیگر از قبیل فایل های script، یا فایل های صوتی شود. مثلاً، ممکن است بخشی از تم صفحه شما حاوی یک اسکین برای کنترل TreeView باشد. می توانید graphicهای استفاده شده بمنظور نمایش دکمه expand و دکمه collapse را بعنوان بخشی از تم شامل کنید.

معمولاً فایل های منبع برای تم در همان پوشه ای هستند که فایل های اسکین برای تم وجود دارند، اما می توانند هر جایی در Web application نیز باشند، مثلاً در subfolder پوشه تم .

<asp:Image runat="server" ImageUrl="ThemeSubfolder/filename.ext" />

 

همچنین می توانید فایل های منبع تان را بیرون از پوشه تم نیز ذخیره کنید. اگر از سینتکس tilde (~) برای ارجاع به فایل های منبع استفاده می کنید، Web application بطور اتوماتیک تصاویر را پیدا خواهد کرد. مثلاً اگر منابع یک تم را در یک subfolder برنامه تان قرار دهید، می توانید از مسیرهای فرم ~/SubFolder/filename.ext برای ارجاع به فایل های منبع استفاده کنید، همانطور که در مثال زیر نشان داده شده است.

<asp:Image runat="server" ImageUrl="~/AppSubfolder/filename.ext" />

Scope کردن تم

می توانید تم هایی را برای یک Web applicationواحد، یا بعنوان یک تم جهانی که می تواند توسط همه applicationهای روی Web server استفاده شود، تعریف کنید. بعد از تعریف تم ، می توان آن را با استفاده از اتریبیوت تم یا StyleSheetTheme روی صفحه های مجزا قرار داد، یا می توان با تنظیم عنصر <pages> در پیکر بندی application به همه صفحه های یک application اعمال کنید. اگر عنصر <pages> در فایل Machine.config تعریف شود، تم به همه صفحه ها در Web applicationهای روی سرور اعمال خواهد شد.

تم های صفحه

تم صفحه، یک پوشه تم با control skins، style sheets، فایل های Graphics، و منابع دیگر است که بصورت یک subfolder در پوشه \App_Themes در وب سایت شما ایجاد شده است. هر تم ، یک subfolder متفاوت از پوشه \App_Themes است. مثال زیر، تم یک صفحه معمولی را نشان میدهد، که دو تم بنام های BlueTheme و PinkTheme را تعریف می کند.

MyWebSite
App_Themes
BlueTheme
Controls.skin
BlueTheme.css
PinkTheme
Controls.skin
PinkTheme.css

 

تم های جهانی (global)

تم جهانی، تمی است که می توانید به همه وب سایت های روی سرور اعمال کنید. تم های جهانی به شما اجازه تعریف نمایی کلی برای domain تان، هنگامی که از چندین وب سایت های که روی همان سرور هستند نگهداری می کنید، می دهد.

تم های جهانی، شبیه تم های صفحه هستند که حاوی تنظیمات property، تنظیمات style sheet، و graphic هستند. اما، تم های جهانی در پوشه ای بنام Theme ذخیره می شونده که برای سرور وب، global محسوب می شود. هر وب سایتی روی سرور، و هر صفحه ای در وب سایت، می تواند یک تم جهانی را reference کند.

آموزش ASP.NET

ارجحیت تنظیمات تم

با تعیین چگونگی اعمال شدن تم، می توانید ارجحیتی را که تنظیمات تم در تنظیمات کنترل محلی می گیرد، مشخص کنید.

اگر پراپرتی تم صفحه را تنضیم کنید، تنظیمات کنترل در تم و صفحه ادغام می شوند تا تنظیمات نهایی برای کنترل را شکل دهند. اگر تنظیمات کنترل هم در کنترل و هم در تم تعریف شوند، تنظیمات کنترل تم هر تنظیمات صفحه ای را روی کنترل override می کند. این استراتژی تم را قادر به ایجاد نمایی ثابت در صفحات می کند، حتی اگر کنترل های روی صفحه از قبل دارای تنظیمات پراپرتی مستقلی باشند. مثلاً، به شما اجازه می دهد تمی را به صفحه ای که در نسخه قبلی ASP.NET ایجاد کرده اید، اعمال کنید.

متناوباً، می توانید تمی را با تنظیم کردن پراپرتی StyleSheetTheme بصورت style sheet اعمال کنید. در این مورد، تنظیمات صفحه محلی، بر تنظیمات تعریف شده در تمی که هنگام تعریف تنظیمات در هر دو جا تعریف شده، ارجحیت دارد. این مدلی است که توسط CSS استفاده می شود. اگر می خواهید حتی هنگامی که تمی را برای نمای کلی اعمال می کنید، قادر به تنظیمات پراپرتی های کنترل های مستقل روی صفحه باشید، ممکن است تمی را بصورت style sheet اعمال کنید.

عنصرهای تم جهانی را نمی توان بصورت جزیی با عنصرهای تم هایی در سطح application جایگزین کرد. اگر تمی در سطح application را هم نام با تم جهانی ایجاد کنید، عناصر تم در تم سطح application، عناصر تم جهانی را override نخواهند کرد.

پراپرتی هایی که می توانید با استفاده از تم ها تعریف کنید

به عنوان یک قانون، می توانید از تم ها برای تعریف پراپرتی هایی استفاده کنید که مربوط به ظاهرصفحه یا کنترل و یا محتویات استاتیک هستند. می توانید فقط پراپرتی هایی را تنظیم کنید که دارای اتریبیوت ThemeableAttribute هستند و در کلاس کنترل روی true تنظیم شده اند.

پراپرتی هایی که بجای ظاهر، رفتار کنترل را تنظیم می کنند، valueهای تم را نمی پذیرند. مثلاً، نمی توانید پراپرتی CommandName کنترل Button را با استفاده از تم تنظیم کنید. بطور مشابه، نمی توانید از تم برای تنظیم پراپرتی AllowPaging کنترل GridView یا پراپرتی DataSource استفاده کنید.

دقت کنید که نمی توانید از عبارت سازها، که عبارات کد را برای تخصیص در صفحه ای هنگام compile کردن، generate می کنند، در تم ها و اسکین ها استفاده کنید.

تم ها در مقابل cascading style sheetها

تم ها در اینکه مجموعه ای از اتریبیوت های رایج را که می توان به هر صفحه ای اعمال کرد تعریف می کنند، شبیه cascading style sheetها هستند. اما، تم ها در موارد زیر با cascading style sheetها فرق دارند:

  • تم ها می توانند پراپرتی های زیاد یک صفحه یا کنترل را تعریف کنند، نه فقط پراپرتی های استایل را. مثلاً، با استفاده از آنها می توانید برای کنترل TreeView، و template layout کنترل GridView، و غیره، گرافیک تعریف کنید.
  • تم ها می توانند حاوی گرافیک باشند.
  • تم ها مانند style sheetها، cascade نمی کنند.
  • بطورپیش فرض، هر valueی پراپرتی تعریف شده در تم که توسط پراپرتی Theme، reference شده است، valueهای پراپرتی را که بطور تعریفی روی کنترل تنظیم شده است، Override می کند، مگر اینکه شما خودتان تم را با استفاد ه از پراپرتی StyleSheetTheme مستقیماً اعمال کنید.
  • فقط یک تم را می توان به هر صفحه اعمال کرد. نمی توانید چندین تم را به یک صفحه اعمال کنید، بر عکس style sheetها که چندین style sheet را می توان اعمال کرد.

 

ملاحظات امنیتی
  • رفتار یک کنترل را طوری تغییر دهید که آنطور که انتظار می رود، رفتار نکند.
  • اسکریپت را در کامپیوتر client تزریق کنید، که منجر به ریسک cross-site scripting می شود.
  • اعتبار سنجی را تغییر دهید.
  • اطلاعات حساس را expose کنید.
  • راههای کاهش این خطرهای رایج عبارتند از:
  • دایرکتوری های جهانی و تم application را با تنظیمات مناسب کنترل access محافظت کنید. فقط باید به کاربرهای مورد اطمینان اجازه نوشتن فایل روی دایرکتوری تم را داد.
  • از تم هایی با منبع غیر قابل اطمینان استفاده کنید. همیشه قبل از استفاده از تم ها در وب سایت تان، تم های خارج از سازمانتان را برای پیدا کردن کدهای خطرناک آزمایش کنید.
  • نام تم را در داده های کوئری، expose نکنید. کاربرهای بدجنس می توانند از این اطلاعات برای استفاده از تم هایی که برای برنامه نویس ناشناس هستند استفاده کنند، و بدینوسیله اطلاعات حساس را expose می کنند.

برای فراگیری ASP.NET لطفا به لینک زیر رجوع کنید:

اموزش ASP.NET






نظرات:



متن امنیتی

گزارش تخلف
بعدی