ASP.NET MVC 3 RC و Custom ViewEngine للسماح بوجهات نظر محملة خارجيًا

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

سؤال

ألعب قليلاً مع تقسيم موقع MVC إلى عدة تجمعات (واجهت بعضًا القضايا في وقت سابق).

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

خلقت بلدي VirtualPathProvider وبلدي VirtualFile, ، مسجلهم مع HostingEnvironment التفكير كان كل شيء على ما يرام. تبين أنه يستخدم فقط VirtualPathProvider إضافة إلى HostingEnvironment في الحمل الأول ، وليس بواسطة تحميلات العرض التالية بواسطة ViewEngine.. حسنًا ، وجدت بعض الأمثلة على كيفية الالتفاف على هذا من خلال تنفيذ خاص بك ViewEngine لاستخدام VPP الخاص بك. لكن نعم ، لا يبدو أن هذا حل عملي لـ MVC 3 ..

كما اتضح ، لا RazorViewEngine ولا WebFormViewEngine تنفيذ اثنين من "الوظائف الرئيسية" على ما يبدو ، FileExists و IsValidPath. هذه ورثت من BuildManagerViewEngine, ، وتعلم ماذا؟ يتم وضع علامة على هذه الطرق كـ sealed..

أي شخص جرب هذا مع MVC 3 وربما يمكن أن يدفعني في الاتجاه الصحيح؟ لقد كنت أحدق في مصدر MVC 3 الآن لفترة طويلة ، لكنني لا أستطيع رؤية أي طريقة للقيام بذلك ..

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

المحلول

الآن أشعر بالغباء قليلاً ، يبدو أنني قمت بتحميل VPP بعد فوات الأوان .. Application_Start, ، ولكن عندما نقلتها إلى بلدي PreApplicationStartMethod بدلا من ذلك ، تم استخدامه من قبل ViewEngine. (لذلك لا يوجد تنفيذ ViewEngine يبدو أن هناك حاجة ، واي!)

المشكلة الآن هي أنه عندما أحاول الوصول إلى عرض يتم تخزينه كمورد ، أحصل على تنزيله بدلاً من تقديمه .. لكن هذا شيء مختلف عن هذا!

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