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
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");
}