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.

È stato utile?

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'.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top