Question

J'ai contenu comme ceci stocké dans une base de données

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

Le contenu fait partie de mon dépôt de données, qui est la raison pour laquelle je veux garder à l'intérieur de la base de données. Je voudrais savoir comment il est possible de le rendre et l'exécuter au moment de la compilation.

Je l'utilise sur un projet mvc asp.net.

Merci.

Était-ce utile?

La solution

Vous pouvez utiliser VirtualPathProvider à partir de framework 2.0, je crois.

Vous pouvez construire une nouvelle classe que le temps d'exécution ASP.Net interrogera pour à peu près toutes les demandes. Il sera important de garder cette classe serré, et si vous dites que vous serez en tirant à partir d'une base de données, je recommande la mise en œuvre de votre système pour charger les fichiers localement sur le serveur Web, et ne pas frapper la base de données pour chaque demande. De plus, lorsque vous tirez ce fichier à partir de la base de données, le moteur d'exécution peut décider de le compiler ... et vous aussi ne veulent pas que cela se produise pour chaque demande.

Mais pour répondre à votre question initiale, est un VirtualPathProvider que vous recherchez. Vous pouvez également l'utiliser pour tirer des ressources de montage si on le souhaite.

Autres conseils

Il semble que vous avez une ligne de code de balisage et la source stockée sous forme d'une chaîne dans un emplacement dans une table dans votre base de données?

Avez-vous envisagé de déménager que les données / code / valeurs à web.config à la place?

Pensez à stocker vos paramètres de configuration de l'environnement dans web.config. i.e..

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

Le contrôleur et le modèle peuvent lire ces valeurs, et de transmettre les paramètres de l'environnement le long de la vue.

Lorsque vous écrivez sur les entrées FAQ, vous pouvez modifier la sortie avec un simple 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" />
<%} %>

Il serait généralement considéré comme une mauvaise pratique, ou même un dub-t-eff, pour conserver le code dans votre base de données. Pensez à la règle de «conserver les données dans votre base de données.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top