【发布时间】:2011-08-04 15:28:17
【问题描述】:
好的,我很可能只是缺少一些基本的东西,但我对此感到非常沮丧。
public partial class myClass: System.Web.UI.Page
{
public String pageHtml{
get
{
if (ViewState["pageHtml"] != null)
{
return (string)ViewState["pageHtml"];
}
else
{
return null;
}
}
set
{
ViewState["pageHtml"] = value;
}
}
protected override void Render(HtmlTextWriter writer)
{
StringBuilder sbOut = new StringBuilder();
StringWriter swOut = new StringWriter(sbOut);
HtmlTextWriter htwOut = new HtmlTextWriter(swOut);
base.Render(htwOut);
string sOut = sbOut.ToString();
pageHtml = sOut;
writer.Write(sOut);
}
protected void btnDownloadPage_Click(object sender, EventArgs e)
{
DownloadTextAsFile("test", pageHtml, "aspx");
}
public void DownloadTextAsFile(string filename, string content, string extention)
{
string downloadFileName = filename + "." + extention;
Response.AddHeader("Content-disposition", "attachment; filename=" + downloadFileName);
Response.ContentType = "application/octet-stream";
Response.Write(content);
Response.End();
}
}
单击 DownloadPage 按钮时,pageHtml 始终为 null。是什么赋予了?我试过移动“pageHtml = sOut;”在“writer.Write(sOut);”之后而且我尝试让 pageHtml 不坚持视图状态,但没有这样的运气。 (我也知道我的 pageHtml 获取并没有真正检查任何内容,因为如果 ViewState["pageHtml"] 为 null 并且我可以返回 ViewState["pageHtml"] 而不进行 if-else 检查但我不关心现在)
【问题讨论】:
-
可以移到init或者load方法吗?
-
检查页面属性 EnableViewState - 是真的吗?