0

アンカータグ、AsyncFileUploadコントロール、およびスパンがあります。アンカータグのInnerTextは、ファイルがデータベースに存在する場合に設定され、存在しない場合は非表示になります。また、ファイルをダウンロードするServerClickイベントもあります。

スパンタグのInnerTextは、AsyncFileUploadOnUploadedCompleteを使用してアップロードされたファイルのファイル名を表示します。

アンカーをクリックすると、ファイルがダウンロードされます(これは問題ありません)。ただし、ファイルを変更すると(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

なぜこれが起こっているのかはわかりませんが、回避策の 1 つは、隠しフィールドを使用して、ダウンロード リンクをクリックしたためにポストバックが発生したかどうかを確認することです。例えば、

<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して、ファイルをダウンロードするかどうかを決定できます。クライアントのクリック属性について確信があるため、使用したことに注意してください-クリック属性をhtmlアンカーで使用してみてください(イベントハンドラーLinkButtonと干渉するかどうかは100%確信が持てません)。ServerClick

于 2013-01-08T06:53:57.197 に答える