MSDN.WhiteKnight - Stack Overflow answers
Ответ на "Как программно получить html-разметку из aspx файла и отравить ее на компьютер-клиент?"
Answer 1141128
Чтобы получить разметку программно, оберните нужное содержимое в элемент типа
<div runat="server" id="divContent">
. Тогда в коде вы сможете получить ее так:using System; using System.IO; using System.Text; using System.Web; using System.Web.UI; using System.Web.UI.HtmlControls; using System.Web.UI.WebControls; //... protected void Button1_Click(object sender, EventArgs e) { StringBuilder sb =new StringBuilder(); StringWriter wr =new StringWriter(sb); Page page = new Page(); HtmlHead head = new HtmlHead(); head.Title = "Title"; page.Controls.Add(head); HtmlForm f = new HtmlForm(); page.Controls.Add(f); f.Controls.Add(this.divContent); HttpContext.Current.Server.Execute(page, wr, true); wr.Flush(); string html = sb.ToString(); }
Затем полученную строку можно отправить в Response (собственно, можно сразу писать в Response.OutputStream вместо StringBuilder). Чтобы заставить браузер скачать файл вместо отображения, можно либо выставить Content-Type в
application/octet-stream
, либо добавитьContent-Disposition: attachment
.Если же нужно просто заставить браузер скачать текущую страницу как есть, можно поступить проще:
Response.AddHeader("Content-Disposition", "attachment; filename=form.html");
Ну и наконец, странно что вы в кнопке "Напечатать" хотите сделать скачивание файла. Возможно, вместо этого лучше реализовать вызов диалога печати:
this.ClientScript.RegisterStartupScript(this.GetType(), "script1", "window.print();",true);
Content is retrieved from StackExchange API.
Auto-generated by ruso-archive tools.