مهارات المعالجة أحادية النقطة لعناوين صفحات الويب
مؤخرًا، عند استخدام مسار خريطة الموقع لمكون التنقل في الصفحة الذي يوفره ms في .net2.0، فكرت في آلية بسيطة ومريحة لحل مشكلة إلغاء مزامنة عنوان الصفحة مع الجميع.
المشاكل الحالية:
1. لا يوجد عادةً موقع تخزين موحد لعناوين صفحات aspx في موقع الويب بأكمله، وبالنسبة لكل صفحة، يتم ترميز عنوان الصفحة مباشرة في ملف aspx الخاص بالصفحة، أو كتابته ديناميكيًا من خلال aspx.cs (عناوين إضافية). تمت إضافتها أيضًا في عنصر التحكم 1.1، ويمكن استخدام خاصية Page.Title في الإصدار 2.0)، وإذا كان الموقع بأكمله يحتوي على الكثير من صفحات الويب، فيجب كتابة هذا الرمز المنطقي المتكرر عدة مرات، وهو أمر قبيح للغاية ولا يمكن تعديله متزامنة في أماكن أخرى حيث يتم استخدام معلومات العنوان.
2. حتى لو تم وضع جميع عناوين الصفحات في ملفات الموارد (أو xml) لدعم الدعم متعدد اللغات، فستكون هناك مشكلة في تحميل العناوين من خلال كود برنامج Tongyi، أي الأماكن التي يتم فيها استخدام عناوين الصفحات في قد لا تكون الصفحة فقط في منطقة العنوان مثل (التحكم في التنقل بالصفحة)، بل إن كيفية السماح لعناصر التحكم هذه بالحصول على معلومات العنوان من ملفات الموارد هذه (أو XML) يعد أيضًا صداعًا.
ما يجب تحقيقه:
1. حل جميع المشكلات المتعلقة بعناوين صفحات الويب مرة واحدة في القالب الرئيسي لموقع الويب بأكمله. يتم الاحتفاظ بالعناوين المستخدمة في جميع مواقع الويب في Web.sitemap (يمكن أن يدعم لغات متعددة)، بحيث يمكن أيضًا الحفاظ على معلومات التنقل الخاصة بالصفحة. معًا. .
2. قم بإضافة اسم الموقع تلقائيًا بعد كل عنوان موقع في عنوان النموذج المنبثق، مثل (تسجيل دخول المستخدم | برنامج Qisi)، ولكن عند الإشارة إلى العنوان في عنصر تحكم التنقل في الصفحة، لن يظهر اسم الموقع، مثل مثل (الصفحة الرئيسية>مركز الأعضاء>تسجيل دخول المستخدم).
3. عند الإشارة إلى سمة page.Title في برنامج aspx.cs، لا يمكن أن يكون هناك اسم موقع. على سبيل المثال، يعرض شريط عنوان الصفحة (تسجيل دخول المستخدم | برنامج Qisi)، ولكن تتم الإشارة إلى قيمة page.Title بالشكل العادي. برنامج الصفحة هو (تسجيل دخول المستخدم).
طريقة التنفيذ المحددة هي كما يلي:
أضف الكود التالي إلى الصفحة الرئيسية للموقع:
Page_Load باطلة محمية (مرسل الكائن، EventArgs e)
{
إذا (! this.IsPostBack)
{
this.searchDescription.Content = this.SearchDescription;
this.searchKeywords.Content = this.SearchKeywords;
}
إذا (SiteMap.CurrentNode ! = فارغة)
{
this.Page.Title = SiteMap.CurrentNode.Title;
}
آخر
{
this.Page.Title = "لم يتم تكوين التنقل في هذه الصفحة في Web.sitemap";
}
}
تجاوز محمي عرض باطلة (كاتب HtmlTextWriter)
{
this.Page.Title = this.Page.Title + " | " + Keyss.WebFramework.ConfigManager.GetInstance().SiteName;
base.Render(writer);
}
يشرح:
1. السبب وراء عدم تنفيذ حكم الصفحة في كتلة (!this.IsPostBack){} هو أنه لا يمكن حفظ حالة العرض في page.Title، وأعتقد أن هذا خطأ صغير في .net2.0.
2. سبب إعادة كتابة سمة العنوان في طريقة العرض هو أن طريقة العرض لا تحفظ حالة العرض أثناء عمر الصفحة، والصفحة. محتوى العنوان المكتوب من الصفحة صالح فقط في الصفحة الرئيسية لأن الصفحة الرئيسية هو المسؤول عن عرض عنوان الصفحة، في طريقة عرض الصفحة، لن يؤثر تغيير العنوان على نتيجة العرض.
المصدر: مدونة برامج Qisi