私は、ajaxcontroltoolkit の AsyncFileUpload コントロールを使用するためのかなり基本的なセットアップだと思うものを持っています。基本的に、コントロールを div から取り出すと正しく動作しますが、div 内に配置すると、OnUploadedComplete サーバー側イベントが発生しなくなります。
これがどのように機能するかは、変更する画像をロールオーバーし、[画像の更新] をクリックすると、ダイアログ (AsyncFileUpload コントロールがある div) が開き、新しい画像をアップロードできるようになります。
<div id="dialog-message" style="display: none;" title="Upload a Headshot Photo">
<p>Upload a headshot photo of this person. Your photo will be uploaded once you select and crop your photo.</p>
<fieldset>
<legend>Choose a photo to upload</legend>
Acceptable formats: .jpeg, .jpg, .gif, and .png and should be at least 72 DPI and 221x221.
**<ajax:AsyncFileUpload ID="asyncImageUpload"
ThrobberID="throbber"
OnClientUploadComplete="uploadComplete"
OnUploadedComplete="AsyncFileUpload_Complete"
runat="server" />**
<img src="/images/ajax-loader.gif" id="throbber" runat="server" style="display: none;" align="absmiddle" alt="loading" />
</fieldset>
</div>
上記は、AsyncFileUpload コントロールを含む div です。私が言ったように、divの外に移動するとうまくいきます。フォームの enctype を変更しようとしましたが、現在は次のようになっています。
<form id="form1" enctype="multipart/form-data" method="post" runat="server">
この問題の解決策を見つけようとしているときに見つけられるすべての提案を試しましたが、どれも機能していないようです。これは更新パネルにもないので、なぜ起動しないのかわかりません。
私が考えることができる唯一のことは、divが最初に非表示になり、ユーザーがリンクをクリックすると表示されることに関係があるということです。コンピューターを窓から放り投げようとしているので、誰かが助けてくれることを本当に願っています (笑)。前もって感謝します!
分離コード:
protected void AsyncFileUpload_Complete(object sender, AjaxControlToolkit.AsyncFileUploadEventArgs e)
{
System.Threading.Thread.Sleep(4000);
if (this.asyncImageUpload.HasFile)
{
string path = MapPath("~/images/uploads/") + Path.GetFileName(e.filename);
this.asyncImageUpload.SaveAs(path);
}
}