2017-07-28 7 views
-1

マスターページを使用しているページの更新パネル内に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として表示されるという事実はちょっと怪しいです!

+0

更新パネルを削除します。 – Ravikumar

+0

役に立たなかった私が見たすべての例は、更新パネル内のコントロールを持っています。また、クライアントスクリプトはポストバックを強制します。 – NoBullMan

+0

しかし、なぜあなたはJSのページをポストバックしていますか?代わりに更新パネルを削除し、SciptManagerを使用してください。 – Ravikumar

答えて

0

UIデザイナーが検索テキストボックスとボタンコンボを追加し、<フォームに含まれていたことがわかりました> ... </form >タグ;したがって、ページ2は<フォーム>のタグで、もう一方(メインページのフォームタグとこのタグ)に含まれています。これはコードを破った。私は、通常のボタンでもOnClickイベントを発生させないことがわかったときに気付いた。フォームタグをdivに変更した後は、すべて正常に機能しました。

関連する問題