سؤال

لدي محتوى مثل هذا المخزن في قاعدة بيانات

<p>This a sample text. <%= Html.ActionLink("test", "myaction", "mycontroller") %></p>

يعد المحتوى جزءًا من مستودع البيانات الخاص بي ، وهذا هو السبب في أنني أرغب في الاحتفاظ به داخل قاعدة البيانات. أود أن أعرف كيف يمكن تقديمه وتنفيذه في وقت الترجم.

أنا أستخدمه في مشروع ASP.NET MVC.

شكرًا لك.

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

المحلول

يمكنك استخدام VirtualPathProvider بدءا من الإطار 2.0 ، على ما أعتقد.

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

ولكن للإجابة على سؤالك الأصلي ، إنه أ VirtualPathProvider التي تبحث عنها. يمكنك أيضًا استخدام هذا لسحب موارد التجميع إذا رغبت في ذلك.

نصائح أخرى

يبدو أن لديك خطًا من الترميز والرمز المصدر المخزن كسلسلة في موقع في جدول في قاعدة البيانات الخاصة بك؟

هل فكرت في نقل هذه البيانات/الكود/القيم إلى أ web.config في حين أن؟

فكر في تخزين إعدادات تكوين البيئة الخاصة بك في web.config. بمعنى آخر

 <appSettings>
   <add Name="IsProduction" value="true" />
   <add Name="RequiresSecure" value="true" />

يمكن لجهاز التحكم والنموذج الخاص بك قراءة هذه القيم ، وتمرير إعدادات البيئة إلى العرض.

عندما تكتب إدخالات الأسئلة الشائعة هذه ، يمكنك تعديل الإخراج وبسيطة if.

<% if (Model.IsProduction) //have your ViewModel pass along whether you're in Production mode, Dev mode, URLs to have SSL, or whatever criteria you like, etc.
{%>
    <!-- my production markup, with image URL, SSL'd etc. -->
    <img src="https://mysite.com/img.png" />
<%}
else  {%>

    <!-- my other Dev markup, with image URL, etc. -->
    <img src="https://myDevServer/img.png" />
<%} %>

عادةً ما يُعتبر ممارسة سيئة ، أو حتى جهد دوبي ، للحفاظ على التعليمات البرمجية في قاعدة البيانات الخاصة بك. النظر في قاعدة "الحفاظ على البيانات في قاعدة البيانات الخاصة بك".

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