Как просмотреть html-файл в другом окне?

Hy,

В моем приложении я храню html-код в строке, например:

string myHtml = "<html><body><input type ='text' value='hello'/></body></html>";

Как я могу просмотреть этот html в другом окне, нажав какую-то кнопку?

 <asp:Button ID="PreviewButton" runat="server" Text="Preview" OnClick="PreviewButton_Click"/>

Я пытался :

protected void PreviewButton_Click(object sender, EventArgs e)
        {
             myHtml = "<html><body><input type ='text' value='hello'/></body></html>";
             Response.Write(myHtml);
             Response.End();
         }

И это работает, предварительный просмотр открывается, но в том же окне.. кто-нибудь знает, как я могу открыть его в другом окне?

Заранее спасибо.

Джефф


person Jeff Norman    schedule 04.01.2011    source источник


Ответы (2)


Вы можете сохранить источник в строке javascript и использовать window.open, а затем записать в новое окно источник.

Не забудьте сначала правильно выйти из источника.

person David Mårtensson    schedule 04.01.2011

Вы можете вызвать window.open в Javascript, чтобы открыть новое окно, показывающее обработчик ASHX, который обслуживает ваш HTML. (вам может потребоваться передать информацию о строке запроса)
Не забудьте установить Response.ContentType в обработчике.

person SLaks    schedule 04.01.2011
comment
@ Ричард: Почему? Если вам не нужны накладные расходы на ASPX, не используйте его. - person SLaks; 04.01.2011
comment
Я тоже пробовал это, но javascript не распознает ‹ › и выдает ошибки... - person Jeff Norman; 04.01.2011
comment
@Jeff: Тогда это не то, что ты пробовал. window.open('/MyHandler.ashx'). - person SLaks; 04.01.2011
comment
@SLaks: Мое обоснование заключается в том, что использование страницы aspx было бы проще, а связанные с этим накладные расходы незначительны. - person Richard Ev; 04.01.2011
comment
@Richard: Как было бы проще? - person SLaks; 04.01.2011
comment
@Jeff: Вам нужен отдельный URL-адрес для нового окна. Этот отдельный URL может также быть ASHX, а не ASPX. - person SLaks; 04.01.2011
comment
Я пробовал сейчас: Response.ContentType = text/HTML; Response.Write(‹скрипт›); Response.Write(window.open(' + myHtml+')); Response.Write(‹/script›); Ответ.Конец(); - person Jeff Norman; 04.01.2011
comment
@Jeff: Вы совершенно неправильно это понимаете. Вызовите window.open в Javascript на исходной странице вместо запуска кода на стороне сервера. Передайте ему URL, указывающий на обработчик ASHX, который записывает ваш HTML. - person SLaks; 04.01.2011
comment
@SLaks: Для меня все сводится к постоянному использованию WebForms. Обычный механизм рендеринга веб-страницы в WebForms — через файл ASPX. Отклонение от этого добавляет сложности. - person Richard Ev; 04.01.2011