Frage

Ich habe Inhalte wie diese in einer Datenbank gespeichert

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

Der Inhalt ist Teil meines Daten-Repository, dass der Grund, warum ich es in der Datenbank halten will, ist. Ich würde gerne wissen, wie es möglich ist, es zu machen und es bei der Kompilierung ausgeführt werden.

Ich benutze es auf einem asp.net Mvc-Projekt.

Danke.

War es hilfreich?

Lösung

Sie VirtualPathProvider von Rahmen beginnen 2.0 verwenden können, glaube ich.

Sie können eine neue Klasse bauen, dass die ASP.Net Laufzeit für fast jede Anforderung abfragt. Es wird wichtig sein, diese Klasse dicht zu halten, und wenn Sie sagen, Sie werden aus einer Datenbank Strang ziehen, würde ich auf jeden Fall empfehlen Ihr System die Durchführung dieser Dateien lokal auf dem Web-Server zu laden, und die Datenbank nicht für jede Anfrage getroffen. Darüber hinaus, wenn Sie diese Datei aus der Datenbank ziehen, kann die Laufzeit entscheiden, es zu kompilieren ... und Sie auch nicht wollen, dass es für jede Anforderung geschehen.

Aber Ihre ursprüngliche Frage, es ist ein VirtualPathProvider zu beantworten, die Sie suchen. Sie können dies auch nutzen, um von der Montage Ressourcen zu ziehen, wenn dies gewünscht wird.

Andere Tipps

Es klingt wie Sie eine Reihe von Markup und Quellcode als String in einem Ort in einer Tabelle in der Datenbank gespeichert haben?

Haben Sie darüber nachgedacht, bewegend, dass Daten / code / Werte zu einer web.config statt?

Betrachten Sie Ihre Umgebung Konfigurationseinstellungen in web.config speichern. d.

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

Ihr Controller und Modell können diese Werte lesen, und die Umgebungseinstellungen passieren entlang der Ansicht.

Wenn Sie schreiben aus diesen FAQ-Einträge, können Sie die Ausgabe mit einem einfachen if ändern.

<% 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" />
<%} %>

Es wäre typischerweise eine schlechte Praxis, oder sogar ein Dub-tee-eff in Betracht gezogen werden, Code in der Datenbank zu halten. Betrachten wir die Regel der ‚keep Daten in Ihrer Datenbank‘.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top