Come caricare dinamicamente il codice aspx da un database?
-
23-09-2019 - |
Domanda
Ho contenuti di questo tipo memorizzati in un database
<p>This a sample text. <%= Html.ActionLink("test", "myaction", "mycontroller") %></p>
Il contenuto è parte del mio repository di dati, questo è il motivo che voglio tenerlo all'interno del database. Vorrei sapere come sia possibile renderlo ed eseguirlo al momento della compilazione.
Io lo utilizzo su un progetto MVC asp.net.
Grazie.
Soluzione
È possibile utilizzare VirtualPathProvider
a partire dal framework 2.0, credo.
È possibile creare una nuova classe che il runtime ASP.Net interrogherà per quasi ogni richiesta. Sarà importante mantenere questa classe stretto, e se dici che ti verrà tirando da un database, consiglio vivamente l'implementazione del sistema per caricare i file in locale sul server web, e non colpire il database per ogni richiesta. Inoltre, quando si tira il file dal database, il runtime può decidere di compilarlo ... e voi non anche desidera che ciò accada per ogni richiesta.
Ma per rispondere alla tua domanda iniziale, è un VirtualPathProvider
che stai cercando. È inoltre possibile utilizzare questo per tirare da risorse di montaggio se lo si desidera.
Altri suggerimenti
Sembra che si dispone di una linea di markup e codice sorgente memorizzato come una stringa in una posizione in una tabella del database?
Avete considerato in movimento che dati / codice / valori a un web.config , invece?
Considerate memorizzare le impostazioni di configurazione di ambiente nel web.config. cioè.
<appSettings>
<add Name="IsProduction" value="true" />
<add Name="RequiresSecure" value="true" />
Il controller e il modello in grado di leggere questi valori, e superare le impostazioni di ambiente lungo alla vista.
Quando si sta scrivendo le voci frequenti, è possibile modificare l'output con un semplice 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" />
<%} %>
Si viene in genere considerata una cattiva pratica, o anche una dub-tee-eff, per mantenere il codice nel database. Prendere in considerazione la regola del 'mantenere i dati nel database'.