Как сгенерировать HTML во всплывающем окне с Asp.Net - PullRequest
0 голосов
/ 17 декабря 2008

У меня есть очень простой HTML-отчет, сгенерированный из одного из моих объектов на сервере. Я генерирую HTML-код на PageLoad, потому что мне нужно удалить этот объект из сеанса и не хочу запрашивать данные у внешнего веб-сервиса после того, как пользователь нажмет на кнопку ссылки.

Суть в том, что пользователь нажимает кнопку на странице, и отчет будет отображаться в новом окне.

Как я уже сказал, html сгенерирован на PageLoad и сейчас хранится в уникальном файле на сервере. Я также подумал, что могу скрыть HTML-код в скрытом контроле. Но это не будет работать без дополнительной работы, это преобразовало бы html-код в какую-то бессмысленную строку и позже восстановило бы.

Я могу отобразить мой HTML-код в текущем окне, используя Response.Write(myhtml as string);

Итак, мой вопрос:

  1. где я могу хранить свой HTML-код за пределами файловой системы (что сложно с проблемами безопасности)
  2. как отобразить мой html-код в новом окне при событии клика. Какой способ я могу использовать.

Я нашел одно возможное решение, описанное здесь .

ОБНОВЛЕНИЕ:

Просто добавляем кусочки кода. Он отображает строку HTML в текущем окне, что не совсем то, что я хочу.

private void InitData(){  
  string filename = DateTime.Now.ToString("yyyyMMdd_HHmmssfff");
  lbtnPrintOutOrder.CommandArgument = filename;
  StreamWriter swXLS = new StreamWriter((MapPath("Files\\")) + filename);

  string message = GetEmail();//get data form session object

  swXLS.Write(message);//save data to file
  swXLS.Close();
}

protected void lbtnPrintOutOrder_Command(object sender, System.Web.UI.WebControls.CommandEventArgs e)
{
   string filePath = (MapPath("Files\\")) + e.CommandArgument.ToString();

  string content;
  using (StreamReader reader = File.OpenText(filePath)) {
     content = reader.ReadToEnd();//get html from file
  }
  Response.Write(content);//load it to current window
  Response.End();
}

1 Ответ

0 голосов
/ 17 декабря 2008

Один большой вопрос: зачем вам очищать объект от сеанса? Почему вы не можете держать объект в сеансе, пока строка не отобразится в новом окне?

Вы можете открыть страницу aspx в новом окне, использовать строковый объект, сохраненный в сеансе, для вывода html и очистить сеанс после отображения html.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...