تفاوت Theme و StylesheetThem

طی آخرین پروژه ای که توی شرکت باهاش درگیر هستیم، برای Css ها از themeخود ASP.NET استفاده کردیم. یه کمی که کار جلو رفت، بچه ها متوجه یه مشکلی شدند، و اون این بود که Css ها دوبار روی صفحه ثبت میشن و صفحه جدای از غیر استاندارد بودن، چون تعداد فایل های Css زیاد هست، وقتی از IE استفاده میشه، چون IE محدودیت تعداد فایل Css دارد، بعضی Cssها اصلا در صفحه ثبت نمیشود.
طی یک بررسی متوجه مشکل شدم، در فایل web.config در تگ Page که Them مورد استفاده را باید تعریف کرد، هم از Them استفاده شده و هم از StyleSheetThem. و این کار باعث ثبت دوباره فایل ها میشد. با حذف StyleSheetThem مشکل حل شد.
اما تفاوت Them با StyleSheetThem در چسیت؟
Them تمامی Styleهایی را که توسط کنترل های تعریف شده است را بازنویسی میکند، ولی StylesheetThemفقط مقادیر خود را اضافه میکند و تاثیری روی تنظیمات سطح کنترل ندارد.
مثلاف فرض کنید یک TextBox داریم و خاصیت BackColor را معادل Red قرار داده ایم. در فولدرApp_Themes منتخب هم یک فایل Skin مربوط به TextBox داریم که مقدار این خاصیت را برابر با Blue قرار داده است. حال اگر برای استفاده از Them منتخب از Theme استفاده کنیم، مقدار این خاصیت توسط Skin جایگذاری میشود و رنگ زمینه آبی میشود. اما اگر از StylesheetThem استفاده کنیم این مقدار تغییر نمیکند و همان رنگ قرمز باقی میماند.
اگر از Them استفاده کنیم، Cssها در پایین ترین قسمت Heade و اگر از StyleSheetThem استفاده کنیم Cssها در بالاترین موقعیت Head ثبت میشوند. در اصل ترتیب Style ها از نظر اهمیت و تاثیر روی کنترل ها به ترتیب زیر میباشد.
1-Thme که در بالای صفحه ثبت میشود.
2-Them که در فایل web.config ثبت میشود.
3- خواصی که در کنترل ها تعریف میشود.
4-StylesheetThem که در بالای صفحه ثبت میشود.
5-StylesheetThem که در فایل web.config ثبت میشود.

1 نظرات:

فروغی گفت...

افرین نکتهی واقعا ضریفی بود این دومین مقاله ای بود که توی بلاگ شما من میخونم و باید بگم که از این به بعد حتما هر روز به بلاگ شما سر میزنم . منتظر مقالاتتون هستم .