ما هي أفضل طريقة لمشاركة MasterPages عبر المشاريع

StackOverflow https://stackoverflow.com/questions/30884

  •  09-06-2019
  •  | 
  •  

سؤال

لنفترض أن لديك مشروعين منفصلين لتطبيق ويب ASP.NET يحتاج كلاهما إلى استخدام MasterPage مشترك.

ما هي أفضل طريقة لمشاركة الصفحة الرئيسية عبر المشاريع دون الحاجة إلى تكرار التعليمات البرمجية؟ويفضل أن يكون ذلك دون الحاجة إلى اللجوء إلى التحكم بالمصادر أو اختراق نظام الملفات.

هل كانت مفيدة؟

المحلول

لقد حاولت تحقيق نفس الشيء.لقد بحثت في بعض الحلول ولكني أعتقد أن استخدام الدليل الظاهري هو على الأرجح أفضل طريقة لمشاركة الصفحات الرئيسية.

فيما يلي بعض المصادر التي يمكنك الاطلاع عليها.

يخبرك الرمز النقطي الثالث بالقرب من نهاية المقالة بالطرق الممكنة التي يمكنك من خلالها مشاركة الصفحات الرئيسية أيضًا.

نصائح أخرى

من ك.سكوت ألين صفحات ASP.Net الرئيسية:النصائح والحيل والفخاخ مقال عن "مشاركة الصفحات الرئيسية":

البديل الأول هو نسخ ملفات الصفحة الرئيسية المشتركة إلى ملف موقع واحد على ملقم ويب IIS.يمكن لكل تطبيق بعد ذلك إنشاء دليل ظاهري كدليل فرعي وأشر إلى الدليل الظاهري إلى الدليل الحقيقي للصفحات الرئيسية.يمكن للتطبيقات بعد ذلك تعيين خاصية MasterPageFile لصفحة باسم الظاهري الدليل، بالإضافة إلى اسم ملف الصفحة الرئيسية.عندما نسقط ملف الصفحة الرئيسية المحدث في الدليل الحقيقي، الصفحة الرئيسية الجديدة سيظهر في جميع التطبيقات على الفور.

النهج الثاني هو استخدام نظام التحكم في الإصدار لمشاركة مجموعة من ملفات الصفحة الرئيسية عبر مشاريع متعددة.معظم التحكم في المصدر / تدعم أنظمة التحكم في الإصدار مستوى معينا من وظائف "المشاركة" ، حيث يمكن أن يظهر ملف أو مجلد في أكثر من مشروع واحد.عندما أ يقوم المطور بالتحقق من ملف الصفحة الرئيسية المحدث ، والمشاريع الأخرى سيرى التغيير على الفور (على الرغم من أن هذا السلوك بشكل عام شكلي).في الإنتاج والاختبار ، سيحتاج كل تطبيق إلى إعادة نشرها لتظهر الصفحة الرئيسية للتحديث.

وأخيرا، يمكن لفيرتثلباثبروفير في ASP.NET 2.0 تقديم الملفات التي غير موجودة على نظام الملفات.مع فيرتثالباثبروفير ، مجموعة من الصفحات الرئيسية يمكن أن تعيش في جداول قاعدة البيانات التي جميع التطبيقات استخدام.للحصول على مقالة ممتازة عن VirutalPathProvider، راجع "افتراضية الوصول إلى المحتوى:خدمة موقع الويب الخاص بك من ملف ZIP”.

احتفظ بنسخة أساسية في التحكم بالمصادر، ودع نظام التحكم بالمصادر الخاص بك يقلق بشأنها.

لنفترض أنه يمكنك إنشاء مستودع مشترك لجميع مشاريعك (مجلد مشترك في شجرة التحكم بالمصدر، على سبيل المثال)، يمكنك إضافة الصفحات الرئيسية كارتباطات باستخدام المسارات النسبية.

ومع ذلك، يقوم IIRC وVisual Studio بعمل نسخ محلية من الملفات المضافة من مسارات خارجية.قد يتعين عليك تحرير نص ملف الحل/المشروع لإضافة الملفات المرتبطة.

هذا، بالطبع، على افتراض أنك تستخدم تنسيق "تطبيق الويب".لا تحتوي "مواقع الويب" الأقدم من VS على ملفات مشروع وتعتمد على وجود جميع الملفات داخل مجلد الموقع.

AFAIK لا توجد طريقة أنيقة لفعل ما تتطلع إليه..سينتهي VS دائمًا بنسخه.

أعتقد بصراحة أنها قد لا تكون فكرة رائعة..من الواضح أنك تريد مشاركة أقل كود مشترك، ولكن صفحة رئيسية كاملة؟..يبدو أنك قد تتساءل عن مشكلة نظرًا لأن تغييرًا طفيفًا واحدًا قد يكون له تأثير كبير على تطبيق واحد أو أكثر.

أود أن أقترح بدلاً من ذلك فصل الأجزاء الجيدة من الوظائف إلى مكونات/عناصر تحكم ونشرها.

لا أستطيع أن أفهم سبب رغبتك في الحصول على نفس العلامات عبر مشاريع مختلفة، إذا قمت بذلك، لا أعرف طريقة سهلة.

ولكن باستخدام الكود، من الواضح أنه يمكنك كتابة ملف كود يرث منه

System.Web.UI.MasterPage

ضع أي منطق تريده في جميع صفحاتك الرئيسية هناك.قم بإنشائه كملف dll الرائع الخاص بك ثم قم فقط بتضمينه في مشاريعك.

يستخدم رابط رمزي:

الارتباط الرمزي هو كائن نظام ملفات يشير إلى ملف آخر كائن النظام.الكائن الذي يتم الإشارة إليه يسمى الهدف.الروابط الرمزية شفافة للمستخدمين؛تظهر الروابط كالمعتاد الملفات أو الدلائل ، ويمكن التصرف بناء عليها من قبل المستخدم أو التطبيق بنفس الطريقة تماما.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top