يضيف ASP.NET 2.0 دعمًا مدمجًا لـ MasterPage، وهو ما يمثل راحة كبيرة لنا. ومع ذلك، بعد استخدامه لفترة من الوقت، وجدت أن MasterPage ليس مثاليًا: لا يمكن للصفحة الرئيسية المتداخلة دعم واجهة وقت التصميم، وسيتم ذكر مشكلة إضافة CSS إلى صفحة المحتوى أدناه.
عادةً، قبل الإصدار 2.0، كانت صيغة إضافة مرجع CSS إلى الصفحة كما يلي:
<link rel="stylesheet" href="css/test.css" />
لقد كانت في الأصل ممارسة شائعة. ولكن في إحدى الصفحات الفرعية لـ MasterPage، ينشأ موقف محرج للغاية: أين يجب أن نضع الكود أعلاه؟
لأنه في صفحة المحتوى المحددة لـ MasterPage، يمكن تحديد محتوى كل علامة <asp:Content /> فقط. وفقًا للممارسة المعتادة، لا يمكننا التحكم في محتوى <header/> للصفحة في aspx. ويجب وضع علامة <link/> هذه داخل <header/>. لقد حاولت إضافة هذا السطر من التعليمات البرمجية داخل <asp:Content />، ولكنه سيظهر خطأ.
وفي الوقت نفسه، لا يمكننا وضع ContentPlaceHolder داخل <header/> الخاص بـ MasterPage للحصول على كود CSS المرجعي المستقبلي.
إذن ما فعلته هو تحديد فئة مساعدة على النحو التالي:
فئة عامة ثابتة ControlHelper
{
AddStyleSheet باطلة عامة ثابتة (صفحة الصفحة، سلسلة cssPath)
{
رابط HtmlLink = جديد HtmlLink();
link.Href = cssPath;
link.Attributes["rel"] = "ورقة الأنماط";
link.Attributes["type"] = "text/css";
page.Header.Controls.Add(link);
}
}
بهذه الطريقة، في صفحة معينة، يمكننا إضافة مراجع CSS من خلال الكود التالي:
protected void Page_Load(object sender, EventArgs e)
{
ControlHelper.AddStyleSheet(this.Page, "css/projectPage.css");
}
علاوة على ذلك، يدعم هذا الرمز الاستخدام في صفحات محتوى محددة أو صفحة رئيسية متداخلة.
في هذه المرحلة، قد يتساءل البعض، لماذا يجب فصل CSS وتحميله بهذه الطريقة؟ هل هو ضروري؟ ألن يكون رائعًا لو قمت بتحديد CSS لجميع الصفحات في عدد قليل من ملفات CSS الشائعة؟
في الواقع، يجب على الأصدقاء الذين هم على دراية بإنتاج HTML القياسي على الويب أن يعرفوا أنه في حالة مثالية نسبيًا، يجب فصل HTML الخاص بالصفحة وCSS المستخدم للعرض التقديمي تمامًا. بالنسبة لتصميمنا المستند إلى معايير الويب، نقوم عادةً أولاً بإنشاء رمز تحديد موضع لكل قسم إطار في الصفحة الرئيسية، بالإضافة إلى رمز تعديل لأجزاء الرأس والتذييل. يتم استخدامها بواسطة كل صفحة محتوى وسيتم وضعها في CSS موحد. بالنسبة لصفحات المحتوى المحددة الأخرى، سيكون لكل صفحة تخطيط محتوى مختلف وأسلوب تعديل خاص بها، لذلك أضع الأجزاء المحددة من كل صفحة محددة في CSS الخاصة بها. يؤدي هذا إلى تشكيل نموذج CSS يتم دمجه طبقة تلو الأخرى وفقًا لمستوى تنفيذ الصفحة الرئيسية (والذي يمكن أن يكون متداخلاً). وتتمثل الميزة في أنه يحقق الفصل بين مسؤوليات كل ملف CSS، مما يسهل فهمه وصيانته.
نظرًا لأنني لم أتعامل مع ASP.NET 2.0 لفترة طويلة، فما ورد أعلاه هو مجرد تجربة شخصية صغيرة. إذا كان هناك حل أكثر ملاءمة، فيرجى إعطائي بعض النصائح.
http://rchen.cnblogs.com/archive/2006/05/23/masterpage_with_css.html