2011-07-27 7 views
9

Me gustaría que los archivos .html sirvan como vistas junto con otras vistas .cshtml en mi proyecto ASP.NET MVC. La razón principal para esto es para que los archivos html estén sujetos a las mismas reglas de seguridad personalizadas en mis acciones que las otras vistas.Renderizando archivos .html como vistas en ASP.NET MVC

No quiero usar las extensiones .cshtml o .aspx porque el framework intenta compilar estos archivos bastante grandes, lo cual es un desperdicio ya que los archivos no tienen nada que compilar.

He actualizado el motor de vista para buscar extensiones .html. Esto funciona bien, pero luego el error que recibo es que no tengo un proveedor de compilación registrado. Intenté registrar un proveedor de compilación para archivos .html en web.config, pero eso no hace ninguna diferencia en el error.

¿Hay un proveedor de compilación que simplemente pase el texto del archivo .html directamente sin intentar compilarlo?

Así que lo que estoy buscando es que los archivos .html vivan en el directorio de vistas para que solo se procesen cuando se soliciten mediante una acción, y las vistas .html no se deben ejecutar a través de ninguna compilación.

Gracias,

Chris

+1

¿No se compilaron las vistas una vez y luego se almacenaron en caché en algún lugar? En mi humilde opinión, tener HTML sencillo para velocidades sake es una verdadera micro optimización. – jfar

Respuesta

14

he encontrado una solución. En mi acción, devuelvo FilePathResult y simplemente carga el archivo y lo pasa sin ninguna compilación.

return new FilePathResult("path_and_file.html", "text/html"); 
+0

O, si quiere ser aún más conciso y está dentro de un 'Controller':' return File ("path_and_file.html", "text/html"); ' –

+1

¿cómo puedo renderizarlo dentro del diseño? – Deka

3

Si quieres hacerlo por uno de tus métodos de acción @ Chris/@Marius son increíbles. ya que dado:

return new FilePathResult("path_and_file.html", "text/html"); 
//or better use 
return File("path_and_file.html", "text/html"); 

Me gustaría añadir una más solución al problema si quiere hacerlo en web.config para volver vistas HTML puro de la carpeta Vistas:

<!-- web.config under the Views folder --> 

<system.webserver> 
<handlers> 

<add name="HtmlScriptHandler" path="*.html" verb="*" precondition="integratedMode" 
    type="System.Web.StaticFileHandler" /> 
</handlers> 
</system.webserver> 

Aquí es a post sugiriéndolo.

+0

¡Gracias que funcionó para mí!^-^ –

+0

Gracias, mejor 'return File ("path_and_file.html", "text/html");' la línea funciona con el núcleo .net – MIP1983

Cuestiones relacionadas