我写了一段代码,我生成一个报告,并在同一个按钮下以.txt
格式生成输出文件。但我无法看到我的文字控制,为什么会发生?
这是我的示例代码:
xmlpath = Server.MapPath("~/WebClientXslt/");
string newxslt = "941Report";
string x = Server.MapPath("~/WebClientXslt/" + newxslt + ".xsl");
string y = (xmlpath + "Testdo.xml");
USAReport.XmlTransformation xmltran = new USAReport.XmlTransformation();
xmltran.Transform(y, x);
// XsltArgumentList XSLTArgs;
System.IO.StringWriter sw = new System.IO.StringWriter();
XslCompiledTransform xslTrans = new XslCompiledTransform();
XslTrans.Load(x);
XmlDocument xDoc = new XmlDocument();
xDoc.Load(y);
returnhtml = ConvertXML(xDoc, x, new XsltArgumentList());
//Response.Write(returnhtml);
ltReport.Visible = true;
ltReport.Text = returnhtml;
在此之后我写了一些代码来为用户生成一个txt文件,如下所示:
oCPyResults.generate941();
我在该函数中按如下方式编写代码:
HttpContext.Current.Response.AddHeader("Content-Disposition", "attachment; filename=" + FileName + "");
HttpContext.Current.Response.ContentType = "application/text";
HttpContext.Current.Response.WriteFile(strPath);
HttpContext.Current.Response.End();
执行上面的代码后,我无法在我的表单上看到我的报表中的报表生成该怎么办?
答案 0 :(得分:2)
如果您采取行动,请看看会发生什么:HttpContext.Current.Response.End();
如果您在页面生命周期的呈现阶段之前调用Response.End,它将不会呈现您的任何内容。
答案 1 :(得分:1)
您无法在单个页面上执行您要执行的操作。您试图告诉浏览器它正在加载的页面既是应该下载的文件,也是应该正常显示的单独内容集。它只能执行其中一个,这就是为什么在注释/取消注释Response.End行时获得这两个/或行为的原因。
您的问题的任何解决方案都将涉及两个请求:一个用于显示的页面,另一个用于提示“另存为”对话框以下载txt文件。
这是让SEEM像你正在做的一样的可能方式:
generate941()
方法中的代码。类似的东西:
<iframe src="/myreportpage.aspx?download=y" style="display:none" ></iframe>