Можно ли сохранять файлы ASCX или ASP.net как файлы HTML

Можно ли сохранять файлы ASCX или ASP.net как файлы HTML? если да, то как?


person Brian    schedule 07.06.2011    source источник
comment
С какой целью?... Из вашего браузера вы можете сохранить выходной html, но что это вам даст?   -  person Fosco    schedule 08.06.2011
comment
Чего именно вы пытаетесь достичь? У вас есть HTML-разметка в файле ASCX, которую нужно извлечь в статическую HTML-страницу? Вы пытаетесь сохранить визуализированный вывод из динамического содержимого в файле ASCX?   -  person David    schedule 08.06.2011


Ответы (2)


да, это возможно, чтобы получить визуализированный контент пользовательского элемента управления, сделайте следующее:

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, если это необходимо :-)

Оттуда сохранение этого в файл должно быть довольно простым.

ХТН. Д

person Dave Long    schedule 07.06.2011

Вы можете сделать это напрямую с помощью метода Render объекта Page или UserControl. Поскольку метод защищен, вам также потребуется создать элемент управления, который является подклассом. Оттуда у вас есть доступ, чтобы делать все, что вам нужно.

e.g.

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 страницы, поскольку в противном случае вы не можете быть уверены, что все дочерние элементы управления/события/и т. д. завершены.

person Jamie Treworgy    schedule 07.06.2011