Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/30.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 为什么我的文件下载失败? 还有另一种方法。。。_C#_Asp.net - Fatal编程技术网

C# 为什么我的文件下载失败? 还有另一种方法。。。

C# 为什么我的文件下载失败? 还有另一种方法。。。,c#,asp.net,C#,Asp.net,尽管VDWWD关于为updatepanel创建postbacktrigger的回答很好,但我的时间紧迫迫使我选择了另一种可行的方法 因此,我没有在GridView上使用并在SelectedIndexChanged上下载,而是选择了,如下所示: <asp:HyperLinkField Text="Download" DataNavigateUrlFields="Filename" DataNavigateUrlFormatString="~/Members/Documents/{0}

尽管VDWWD关于为updatepanel创建postbacktrigger的回答很好,但我的时间紧迫迫使我选择了另一种可行的方法

因此,我没有在GridView上使用
并在
SelectedIndexChanged
上下载,而是选择了
,如下所示:

<asp:HyperLinkField Text="Download" DataNavigateUrlFields="Filename"
    DataNavigateUrlFormatString="~/Members/Documents/{0}" Target="_blank" />
我的浏览器的开发工具中有一个解析器错误。。。关于“使用response.Write()编辑响应时可能发生这种情况”

令人烦恼的是,当我从数据库中读取文件的二进制数据以供下载时(如下所示),它起了作用:

Response.Clear();
Response.ContentType = file.MimeType;
Response.AddHeader("content-disposition", $"attachment; filename={file.Filename}");
Response.BinaryWrite(file.FileData);
Response.End();

那么,单更改行是如何中断它的呢?

您可以通过编程方式添加PostBackTrigger。在这个代码段中,它循环GridView中的所有行,并添加每个下载按钮作为触发器

foreach (GridViewRow row in gvFiles.Rows)
{
    LinkButton lb = row.FindControl("DownLoadButton") as LinkButton;
    ScriptManager.GetCurrent(Page).RegisterPostBackControl(lb);
}

看起来您正在UpdatePanel中触发下载。如果是,请将PostBackTrigger设置为“下载”按钮。@VDWWD下载正在被触发,但位于主页上“更新”面板内的用户控件内。我不确定postbacktrigger在这种情况下会如何工作
文件名
部分的
内容处理
标题应该用引号括起来。i、 e.
内容处置:附件;filename=“filename.jpg”
foreach (GridViewRow row in gvFiles.Rows)
{
    LinkButton lb = row.FindControl("DownLoadButton") as LinkButton;
    ScriptManager.GetCurrent(Page).RegisterPostBackControl(lb);
}