Вопрос

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

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

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

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

Спасибо.

Это было полезно?

Решение

Вы можете использовать VirtualPathProvider я полагаю, начиная с framework 2.0.

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

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

Другие советы

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

Рассматривали ли вы возможность переноса этих данных / кода / значений в web.конфигурация вместо этого?

Рассмотрите возможность сохранения параметров конфигурации вашей среды в 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