0

我有一个锚标记、一个 AsyncFileUpload 控件和一个跨度。当数据库中存在文件时设置锚标记的 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>

有没有办法解决?

谢谢你。

4

1 回答 1

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它是因为我确信它的客户端单击属性 - 您可以尝试将 click 属性与 html 锚点一起使用(我不是 100% 确定它是否会干扰ServerClick事件处理程序)。

于 2013-01-08T06:53:57.197 回答