Как динамически загружать код aspx из базы данных? - PullRequest
2 голосов
/ 01 апреля 2010

У меня есть такой контент, хранящийся в базе данных

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

Содержимое является частью моего хранилища данных, поэтому я хочу сохранить его в базе данных. Я хотел бы знать, как это можно сделать и выполнить во время компиляции.

Я использую его в проекте asp.net mvc.

Спасибо.

Ответы [ 2 ]

3 голосов
/ 01 апреля 2010

Похоже, у вас есть строка разметки и исходный код, хранящийся в виде строки в месте в таблице в вашей базе данных?

Рассматривали ли вы перемещение этих данных / кода / значений в web.config ?

Подумайте о сохранении настроек конфигурации вашей среды в web.config. т.е.

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

Ваш контроллер и модель могут считывать эти значения и передавать параметры среды в представление.

Когда вы пишете эти записи FAQ, вы можете изменить вывод с помощью простого 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" />
<%} %>

Как правило, хранение кода в вашей базе данных считается плохой практикой или даже дублированием. Рассмотрим правило «хранить данные в вашей базе данных».

1 голос
/ 26 сентября 2013

Вы можете использовать VirtualPathProvider, начиная с фреймворка 2.0, я считаю.

Вы можете создать новый класс, который среда выполнения ASP.Net будет запрашивать практически для каждого запроса. Будет важно сохранить этот класс жестким, и если вы скажете, что будете извлекать данные из базы данных, я определенно рекомендую внедрить вашу систему для загрузки этих файлов локально на веб-сервер, а не попадать в базу данных для каждого запроса. Кроме того, когда вы извлекаете этот файл из базы данных, среда выполнения может решить скомпилировать его ... и вы также не хотите, чтобы это происходило для каждого запроса.

Но чтобы ответить на ваш оригинальный вопрос, это VirtualPathProvider, который вы ищете. При желании вы также можете использовать это для извлечения ресурсов сборки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...