otro llamar inyectar insertar incluir importar dentro como archivo html asp.net-mvc actionresult controller-action

llamar - inyectar html en html



Cómo servir el archivo html desde otro directorio como ActionResult (5)

¿Puedes leer el archivo html en una cadena y devolverlo en acción? Se representa como página HTML como se muestra a continuación:

public string GetHtmlFile(string file) { file = Server.MapPath("~/" + file); StreamReader streamReader = new StreamReader(file); string text = streamReader.ReadToEnd(); streamReader.Close(); return text; }

Inicio / GetHtmlFile? File = Solution / Html / index.htm

Si el destino o el mecanismo de almacenamiento de los archivos HTML es complicado, entonces usted puede Proveedor de ruta virtual

Ejemplo de MVC de proveedor de ruta virtual

Tengo un caso especializado en el que deseo servir un archivo html directo de una acción de controlador.

Quiero servirlo desde una carpeta diferente a la carpeta Vistas. El archivo está ubicado en

Solution/Html/index.htm

Y quiero servirlo desde una acción de controlador estándar. ¿Puedo usar el archivo de devolución? ¿Y cómo hago esto?


Extendí la respuesta de wahid para crear HtmlResult

Crear resultado HTML que extiende FilePathResult

public class HtmlResult : FilePathResult { public HtmlResult(string path) : base(path, "text/html") { } }

Método estático creado en el controlador

public static HtmlResult Html(this Controller controller, string path) { return new HtmlResult(path); }

usado como volvemos a ver

public HtmlResult Index() { return this.Html("~/Index.html"); }

Espero eso ayude


Mira esto :

public ActionResult Index() { return new FilePathResult("~/Html/index.htm", "text/html"); }


Quiero poner mis dos centavos. He encontrado esto muy escueto y ya está allí:

public ActionResult Index() { var encoding = new System.Text.UTF8Encoding(); var html = ""; //get it from file, from blob or whatever return this.Content(html, "text/html; charset=utf-8"); }


Si desea representar este archivo index.htm en el navegador, puede crear una acción de controlador como esta:

public void GetHtml() { var encoding = new System.Text.UTF8Encoding(); var htm = System.IO.File.ReadAllText(Server.MapPath("/Solution/Html/") + "index.htm", encoding); byte[] data = encoding.GetBytes(htm); Response.OutputStream.Write(data, 0, data.Length); Response.OutputStream.Flush(); }

o simplemente por:

public ActionResult GetHtml() { return File(Server.MapPath("/Solution/Html/") + "index.htm", "text/html"); }

Así que digamos que esta acción está en el controlador de inicio y algunos hits de usuario http://yoursite.com/Home/GetHtml luego se mostrará index.htm.

EDITAR: otros 2 métodos

Si desea ver html sin formato de index.htm en el navegador:

public ActionResult GetHtml() { Response.AddHeader("Content-Disposition", new System.Net.Mime.ContentDisposition { Inline = true, FileName = "index.htm"}.ToString()); return File(Server.MapPath("/Solution/Html/") + "index.htm", "text/plain"); }

Si solo quieres descargar el archivo:

public FilePathResult GetHtml() { return File(Server.MapPath("/Solution/Html/") + "index.htm", "text/html", "index.htm"); }