ASP.NET MVC 3 RC و Custom ViewEngine للسماح بوجهات نظر محملة خارجيًا
-
27-09-2019 - |
سؤال
ألعب قليلاً مع تقسيم موقع 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
يبدو أن هناك حاجة ، واي!)
المشكلة الآن هي أنه عندما أحاول الوصول إلى عرض يتم تخزينه كمورد ، أحصل على تنزيله بدلاً من تقديمه .. لكن هذا شيء مختلف عن هذا!