我从服务器上的一个对象生成了非常简单的 html 报告。我生成 html 代码是PageLoad
因为我需要从会话中清除该对象,并且不想在用户单击链接按钮后向外部 Web 服务询问数据。
粗略的想法是用户点击页面上的按钮,报告将显示在新窗口中。
正如我所说,我已经生成了 html,PageLoad
现在存储在服务器的唯一文件中。我还认为我可以将 html 代码隐藏在隐藏控件中。但是如果没有额外的工作,这将无法工作,它将html代码转换为一些无意义的字符串并稍后恢复。
我可以设法通过使用将我的 html 代码显示到当前窗口中Response.Write(myhtml as string);
所以我的问题是:
- 我在哪里可以将我的 html 代码存储在文件系统之外(这对于安全问题很棘手)
- 如何在单击事件时将我的 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();
}