Pregunta

Tengo contenidos de este tipo almacenada en una base de datos

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

El contenido es parte de mi repositorio de datos, que es la razón por la que quiero mantenerlo dentro de la base de datos. Me gustaría saber cómo es posible para hacerlo y ejecutarlo en tiempo de compilación.

Lo estoy usando en un proyecto asp.net mvc.

Gracias.

¿Fue útil?

Solución

Se puede utilizar VirtualPathProvider partir de 2,0 marco, creo.

Puede crear una nueva clase que el tiempo de ejecución ASP.Net se consulta para casi todas las solicitudes. Será importante mantener esta clase apretada, y si dice que va a estar tirando de una base de datos, sin duda recomendaría la implementación de su sistema para cargar los archivos de forma local en el servidor web, y no golpear la base de datos para cada solicitud. Además, cuando se tire de ese archivo de la base de datos, el tiempo de ejecución puede decidir compilarlo ... y también desea no haga que suceda para cada solicitud.

Pero para responder a su pregunta original, es un VirtualPathProvider que usted está buscando. También puede usar esto para tirar de los recursos de montaje si así se desea.

Otros consejos

Parece que usted tiene una línea de código fuente de marcado y almacenado como una cadena en una ubicación en una tabla en la base de datos?

¿ha considerado que se mueve y datos / código / valores a un web.config en su lugar?

Considere guardar sus ajustes de configuración de entorno en web.config. es decir.

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

Su controlador y el modelo puede leer estos valores, y transmitir los valores del entorno junto a la vista.

Cuando se está escribiendo a cabo esas entradas FAQ, se puede modificar la salida con 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" />
<%} %>

Sería por lo general se considera una mala práctica, o incluso un doblaje-te-FEP, para mantener el código en su base de datos. Considere la regla de los "datos de tener en su base de datos.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top