0

我从服务器上的一个对象生成了非常简单的 html 报告。我生成 html 代码是PageLoad因为我需要从会话中清除该对象,并且不想在用户单击链接按钮后向外部 Web 服务询问数据。

粗略的想法是用户点击页面上的按钮,报告将显示在新窗口中。

正如我所说,我已经生成了 html,PageLoad现在存储在服务器的唯一文件中。我还认为我可以将 html 代码隐藏在隐藏控件中。但是如果没有额外的工作,这将无法工作,它将html代码转换为一些无意义的字符串并稍后恢复。

我可以设法通过使用将我的 html 代码显示到当前窗口中Response.Write(myhtml as string);

所以我的问题是:

  1. 我在哪里可以将我的 html 代码存储在文件系统之外(这对于安全问题很棘手)
  2. 如何在单击事件时将我的 htmlcode 显示到新窗口中。我可以用什么方法。

我找到了此处描述的一种可能的解决方案。

更新:

只需添加几段代码。它在当前窗口中显示 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();
}
4

1 回答 1

0

一个大问题是,为什么需要从 Session 中清除对象?为什么在新窗口中显示字符串之前不能将对象保持在会话中?

您可以在新窗口中打开一个 aspx 页面,使用存储在会话中的字符串对象来输出 html,并在显示 html 后清除会话。

于 2008-12-17T16:13:07.273 回答