#asp.net #html #ascx
#asp.net #HTML #ascx
Вопрос:
Может ли ASCX или ASP.net файлы могут быть сохранены как HTML-файлы? если да, то как?
Комментарии:
1. С какой целью?… Из вашего браузера вы можете сохранить выходной HTML, но что это даст вам?
2. Чего именно вы пытаетесь достичь? Есть ли у вас HTML-разметка в файле ASCX, которую вам нужно извлечь на статическую HTML-страницу? Вы пытаетесь сохранить отображаемый вывод из динамического содержимого в файле ASCX?
Ответ №1:
да, это возможно, чтобы получить отображаемое содержимое пользовательского элемента управления, выполните следующие действия :
StringWriter output = new StringWriter();
Page pageHolder = new Page();
UserControl viewControl = (UserControl)pageHolder.LoadControl("path to ascx file");
pageHolder.Controls.Add(viewControl);
HttpContext.Current.Server.Execute(pageHolder, output, true);
string htmlOutput = output.ToString();
Уверен, вы можете адаптировать приведенное выше для ASPX-страницы, если требуется 🙂
Оттуда сохранить это в файл должно быть довольно просто.
HTH. D
Ответ №2:
Вы можете сделать это напрямую с помощью Render
метода Page
или UserControl
. Поскольку метод защищен, вам нужно будет создать элемент управления, который подклассирует либо. Оттуда у вас есть доступ, чтобы делать все, что вам нужно.
например
public partial class MyPage: Page
{
public string GetPageContents()
{
StringBuilder sb = new StringBuilder();
StringWriter sw = new StringWriter(sb);
using (HtmlTextWriter writer = new HtmlTextWriter(sw))
{
Render(writer);
}
return sb.ToString();
}
}
Вы, вероятно, не хотели бы вызывать это в любое время перед PreRenderComplete
событием страницы, поскольку в противном случае вы не можете быть уверены, что все дочерние элементы управления / события / etc завершились.