أعتقد أن الجميع قد استخدموا وظيفة الصفحة الرئيسية المتداخلة ضمن ASP.NET 2.0. هذه الوظيفة قوية جدًا وتسمح للمستخدمين بإنشاء صفحات القالب أولاً ثم تطبيقها بسهولة على الصفحات الأخرى. علاوة على ذلك، يمكن أن تكون صفحات القالب متداخلة، ولكن سنجد مشكلة في صفحات القالب المتداخلة، أي أنه عند استخدام صفحات القالب المتداخلة، لا توجد طريقة لإجراء عمليات مرئية عليها في حالة عرض التصميم، فكيف يمكن حل ذلك مشكلة؟ لقد بحثت في مدونة الأجنبي ووجدت طريقة يقدمها الأجنبي في الوقت الحالي، يمكنني أن أتبعها لحل هذه المشكلة وسأشرحها أدناه:
يمكننا كتابة فئة أساسية تسمى basepage.cs ووضعها في دليل app_code، وفي هذه الفئة، أضف فئة تسمى basepage.cs.
سمة runtimeMasterPageFile هي نوع سلسلة يحدد ملف القالب الذي سيتم استخدامه أثناء وقت التشغيل ويتجاوز OnPreInit.
الطريقة والكود كالتالي:
الفئة العامة BasePage: System.Web.UI.Page
{
سلسلة خاصة runtimeMasterPageFile؛
سلسلة عامة RuntimeMasterPageFile
{
يحصل
{
إرجاع وقت التشغيل MasterPageFile؛
}
تعيين
{
runtimeMasterPageFile = value;
}
}
تجاوز محمي باطل OnPreInit (EventArgs e)
{
إذا (runtimeMasterPageFile! = فارغ)
{
this.MasterPageFile = runtimeMasterPageFile;
}
base.OnPreInit(e);
}
}
بعد ذلك، نقوم بإنشاء صفحة قالب تسمى mainmaster.master، ونضيف فيها معلومات الرأس والتذييل بشكل عشوائي، ونترك عنصرًا نائبًا للمحتوى يسمى MainContent في المنتصف، ثم نبني صفحة قالب تسمى submaster.master، حيث
MasterPageFile="~/MainMaster.master"، لتطبيق صفحة القالب الرئيسي، ضع جدولاً يحتوي على صف واحد وعمودين، كما يلي:
<asp:Content ID = "foo" ContentPlaceHolderId = "MainContent" runat = "الخادم">
<table>
<تر>
<عرض td = "300">
العمود الأيسر في SubMaster
<br />
<asp:ContentPlaceHolder ID="LeftColumn" runat="server">
</asp:ContentPlaceHolder>
</TD>
<TD>
العمود الأيمن في SubMaster
<br />
<asp:ContentPlaceHolder ID="RightColumn" runat="server">
</asp:ContentPlaceHolder>
</TD>
</tr>
</الجدول>
</asp:المحتوى>
وأخيرا، في صفحة aspx، حدد هذا
<%@ لغة الصفحة = "C#" MasterPageFile = "" RuntimeMasterPageFile = "SubMaster.master" CodeFileBaseClass = "BasePage" AutoEventWireup = "true" CodeFile = "Default.aspx.cs" يرث = "_Default" عنوان = "صفحة بدون عنوان" %>
كما ترون، هنا، لا نقوم بتعيين خصائص masyterpage، ولكن نحدد خصائص RuntimeMasterPageFile كـ
submaster.master، هذا قالب يتم تحميله في وقت التشغيل، وتحدد سمة codefilebaseclass الفئة basepage.cs التي كتبناها للتو، وبهذه الطريقة، يمكننا رؤية السحب في حالة عرض التصميم لـ ASPX ويمكننا السحب والإسقاط التصميم.
تجدر الإشارة إلى أنه وفقًا لمايكروسوفت، يُقال أنه لن يتوفر الدعم الكامل لتبديل حالة عرض التصميم الكاملة عند تداخل القوالب حتى الإصدار التالي من VISUAL STUDIO.
لقد قدمت تنزيل مثال لهذه المقالة، انقر هنا للتحميل.