マスターページを使用しているページの更新パネル内にAsyncFileUploadコントロールがあります。 ファイルを選択すると、クライアント側のOnClientUploadCompleteは起動しますが、サーバー側は起動しません。私はこの問題を調査し、更新パネルの外に隠れたボタンを追加し、非同期ポストバックを強制するクライアントスクリプト上の隠しボタンを追加するなど、さまざまな提案を試みましたが、マスターページの "form"タグを変更して暗号化タイプを追加しました。働いている。私が持っているのaspxファイルでAsyncFileUploadはサーバー側を起動しませんUploadComplete
:
<script type="text/javascript">
function onClientUploadComplete(sender, e) {debugger
var ct = e.get_contentType();
var fn = e.get_fileName();
var l = e.get_length();
var p = e.get_path();
document.getElementById('uploadCompleteInfo').innerHTML = '';
__doPostBack('upnlNews', '');
}
function onClientUploadStart(sender, e) {
document.getElementById('uploadCompleteInfo').innerHTML = 'Please wait while uploading ' + e._fileName;
}
</script>
<asp:UpdatePanel runat="server" ID="upnlNews">
<ContentTemplate>
<ajaxToolkit:AsyncFileUpload runat="server" ID="fuAttchedDocs"
ThrobberID="myThrobber"
UploaderStyle="Traditional"
OnClientUploadComplete="onClientUploadComplete"
onuploadedcomplete="fuAttchedDocs_UploadedComplete"
onuploadedfileerror="fuAttchedDocs_UploadedFileError" />
<asp:Label runat="server" ID="myThrobber" Style="display: none;">
<img align="middle" alt="" src="../assets/images/6.gif" />
</asp:Label>
<div id="uploadCompleteInfo"></div><br />
</ContentTemplate>
</asp:UpdatePanel>
追加情報 私は、クライアント側スクリプトでブレークポイントを置くとChromeの開発ツールで変数を確認するとき、私は以下を参照してください。
function onClientUploadComplete(sender, e) {debugger
var ct = e.get_contentType(); ==> ct = ""
var fn = e.get_fileName(); ==> fn = "spock.jpg"
var l = e.get_length(); ==> l = "NaN"
var p = e.get_path(); ==> p = "C:\fakepath\spock.jpg"
document.getElementById('uploadCompleteInfo').innerHTML = '';
__doPostBack('upnlNews', '');
}
ファイルの長さがNaNとして表示されるという事実はちょっと怪しいです!
更新パネルを削除します。 – Ravikumar
役に立たなかった私が見たすべての例は、更新パネル内のコントロールを持っています。また、クライアントスクリプトはポストバックを強制します。 – NoBullMan
しかし、なぜあなたはJSのページをポストバックしていますか?代わりに更新パネルを削除し、SciptManagerを使用してください。 – Ravikumar