文件下载回发

时间:2013-01-08 05:25:45

标签: c# download asyncfileupload

我有一个锚标记,一个AsyncFileUpload控件和一个span。当数据库中存在文件时,会设置锚标记的InnerText,如果没有,则隐藏它。它还有一个下载文件的ServerClick事件。

span标记的InnerText显示使用AsyncFileUpload OnUploadedComplete上传的文件的文件名。

当我点击锚点时,文件下载(这很好。)但是当我更改文件(使用AsyncFileUpload)时,它会回发并再次触发锚标记的ServerClick方法,因此再次下载文件。

<a id="lnkDownloadFile" runat="server"></a>
<span id="spnFilename" runat="server"></span>
<input type="button" id="btnReplaceFile" value="Replace File" runat="server" />
<div>
    <ajaxToolkit:AsyncFileUpload ID="fuFile" runat="server" OnUploadedComplete="UploadComplete" OnClientUploadError="UploadError" />
</div>

有什么方法吗?

谢谢。

1 个答案:

答案 0 :(得分:0)

我不确定为什么会这样,但其中一个解决方法是使用隐藏字段来确认是否由于点击下载链接而发生了回发。例如,

<input type="hidden" id="downloadFile" runat="server" />
<asp:LinkButton id="lnkDownloadFile" runat="server" OnClientClick="return setDownloadFile();" />
<script type="text/java-script" >
 function setDownloadFile() {
      document.getElementById('<%= downloadFile.ClientID>').value = 'true';
      return true;
 }
</script>

您可以在链接按钮单击中检查downloadFile值,以决定是否下载文件。请注意,我使用了LinkButton因为我确定它的客户端点击属性 - 您可以尝试使用带有html锚点的click属性(我不能100%确定它是否会与ServerClick事件处理程序进行交互)