У меня есть очень простой HTML-отчет, сгенерированный из одного из моих объектов на сервере. Я генерирую HTML-код на PageLoad
, потому что мне нужно удалить этот объект из сеанса и не хочу запрашивать данные у внешнего веб-сервиса после того, как пользователь нажмет на кнопку ссылки.
Суть в том, что пользователь нажимает кнопку на странице, и отчет будет отображаться в новом окне.
Как я уже сказал, html сгенерирован на PageLoad
и сейчас хранится в уникальном файле на сервере. Я также подумал, что могу скрыть HTML-код в скрытом контроле. Но это не будет работать без дополнительной работы, это преобразовало бы html-код в какую-то бессмысленную строку и позже восстановило бы.
Я могу отобразить мой HTML-код в текущем окне, используя Response.Write(myhtml as string);
Итак, мой вопрос:
- где я могу хранить свой HTML-код за пределами файловой системы (что сложно с проблемами безопасности)
- как отобразить мой 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();
}