C# 在asp.net中下载文件后无法显示标签
我在我的C# 在asp.net中下载文件后无法显示标签,c#,asp.net,excel,C#,Asp.net,Excel,我在我的asp.net项目中有一个按钮,在单击下载的excel工作表时,我还想显示文件的MD5哈希代码。应用程序工作正常,但标签未显示,但在调试过程中,生成了哈希代码,并将其成功分配给标签,但未在前端显示 请帮我解决这个问题。我的代码看起来像这样 protected void btnDownload_Click(object sender, EventArgs e) { pnlHashCode.Visible = true; lblHashCode.Visible = true
asp.net
项目中有一个按钮,在单击下载的excel工作表时,我还想显示文件的MD5哈希
代码。应用程序工作正常,但标签未显示,但在调试过程中,生成了哈希代码,并将其成功分配给标签,但未在前端显示
请帮我解决这个问题。我的代码看起来像这样
protected void btnDownload_Click(object sender, EventArgs e) {
pnlHashCode.Visible = true;
lblHashCode.Visible = true;
string strURL = "UploadHONMarks.xls";
WebClient req = new WebClient();
pnlHashCode.Visible = true;
HttpResponse response = HttpContext.Current.Response;
response.Clear();
response.ClearContent();
response.ClearHeaders();
response.Buffer = true;
response.AddHeader("Content-Disposition", string.Format("attachment;filename={0}", "UploadHONMarks.xls"));
Response.ContentType = "Application/x-msexcel";
response.TransmitFile(Server.MapPath(strURL));
string filename = Server.MapPath("UploadHONMarks.xls");
byte[] hashBytes;
MD5 md5Hash = MD5.Create();
hashBytes = md5Hash.ComputeHash(Encoding.UTF8.GetBytes(filename));
StringBuilder sBuilder = new StringBuilder();
for (int i = 0; i < hashBytes.Length; i++) {
sBuilder.Append(hashBytes[i].ToString("x2"));
}
pnlHashCode.Visible = true;
lblHashCode.Text = sBuilder.ToString();
}
protectedvoidbtndownload\u单击(对象发送方,事件参数e){
pnlHashCode.Visible=true;
lblHashCode.Visible=true;
string strURL=“UploadHONMarks.xls”;
WebClient req=新的WebClient();
pnlHashCode.Visible=true;
HttpResponse response=HttpContext.Current.response;
response.Clear();
response.ClearContent();
response.ClearHeaders();
response.Buffer=true;
AddHeader(“Content Disposition”,string.Format(“attachment;filename={0}”,“UploadHONMarks.xls”);
Response.ContentType=“应用程序/x-msexcel”;
TransmitFile(Server.MapPath(strURL));
字符串文件名=Server.MapPath(“UploadHONMarks.xls”);
字节[]哈希字节;
MD5 md5Hash=MD5.Create();
hashBytes=md5Hash.ComputeHash(Encoding.UTF8.GetBytes(filename));
StringBuilder sBuilder=新StringBuilder();
for(int i=0;i
根据您对我的问题的回答,以下是我的建议。把
lblHashCode.Visible=false;在下面我是回邮支票
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
lblHashCode.Visible = false;
}
}
您在同一响应中发送了一个内容配置(用于文件下载),并且您还希望修改网页。这是不可能的,因为浏览器只能处理一种类型的响应 这些选择包括:
- 在响应中,您在页面中发送更改,或
- 在响应中,您发送一个文件供下载
另一个选项是在单击响应中发送MD5,并添加隐藏的链接或按钮文件。因此,使用MD5可以触发javascript函数,在链接上生成“单击”事件,从而下载文件。像这样的技巧可以在同一个响应中伪造两个不同的操作。是否在代码的其他位置设置lblHashCode.Visible=false?尤其是页面加载事件?是的。。在页面加载中。。。因为我希望标签在页面加载时不可见。我现在明白这是原因,但现在请告诉我如何解决该问题。在这种情况下,请将“lblHashCode.Visible=false”置于“not post back”复选框下。因此,在btnDownload_Click postback.protected void Page_Load(对象发送方,EventArgs e){DataTable dtBatch;if(!IsPostBack){pnlModule.Visible=false;pnlHashCode.Visible=false;lblFA.Text=“FA1”;lblHashCode.Visible=false;}