Pergunta

Eu tenho conteúdo como este armazenado em um banco de dados

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

O conteúdo faz parte do meu repositório de dados, é por isso que quero mantê -lo dentro do banco de dados. Gostaria de saber como é possível renderizá -lo e executá -lo no momento da compilação.

Estou usando -o em um projeto ASP.NET MVC.

Obrigada.

Foi útil?

Solução

Você pode usar VirtualPathProvider Começando da estrutura 2.0, acredito.

Você pode construir uma nova classe que o ASP.NET RUNDTIME consulte quase todas as solicitações. Será importante manter essa classe apertada e, se você disser que estará extraindo de um banco de dados, eu recomendaria definitivamente a implementação do seu sistema para carregar esses arquivos localmente no servidor da Web e não atingir o banco de dados para cada solicitação. Além disso, quando você puxa esse arquivo do banco de dados, o tempo de execução pode decidir compilá -lo ... e você também não quer que isso aconteça para cada solicitação.

Mas para responder à sua pergunta original, é um VirtualPathProvider que você está procurando. Você também pode usar isso para extrair recursos de montagem, se desejar.

Outras dicas

Parece que você tem uma linha de marcação e código -fonte armazenado como uma string em um local em uma tabela no seu banco de dados?

Você já pensou em mover esses dados/código/valores para um web.config em vez de?

Considere armazenar suas configurações de configuração de ambiente no web.config. ou seja

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

Seu controlador e modelo podem ler esses valores e passar as configurações do ambiente para a exibição.

Ao escrever essas entradas de perguntas frequentes, você pode modificar a saída com um simples 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" />
<%} %>

Normalmente, seria considerado uma prática ruim, ou mesmo um dub-tee-eff, manter o código no seu banco de dados. Considere a regra de 'Mantenha os dados em seu banco de dados'.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top