2

asyncfileupload コントロールを持つ Webusercontrol に問題があります。私の websusercontrol は、updatepanel によってラップされたプレースホルダー コントロールにロードされています。asyncpostback が原因で、プレースホルダーのコントロールをロードしてクリアする必要があります。

まったくアップロードしたくないasyncfileuploadを除いて、webusercontrolは問題なく動作します。以前は webusercontrol を *.aspx サイトとして実行していたため、コードにエラーがないことを確認できます。

問題は、 asyncpostback ごとにコントロールをクリアしてリロードする必要があるという事実だと思いますか?

4

1 に答える 1

2

動的に読み込まれるカスタム ユーザー コントロール内に AsyncFileUpload コントロールを配置すると、問題が発生すると思います。

このリンクを読んだ後、この問題を回避することができました

基本的に、ダミーの AsyncFileUpload コントロールを親 .aspx ページに配置しました

例えばDefault.aspx

    <span style="display:none">
        <asp:AsyncFileUpload ID="DummyAsyncFileUpload" runat="server" />
    </span>

AsyncFileUpload コントロールはユーザーには表示されませんが、ASP.NET には引き続き表示されることに注意してください。

私の理論はこれです:

ファイルをアップロードするには、別のエンコード タイプ ( multipart/form-data) を使用してフォームのコンテンツを投稿する必要があります。

AsyncFileUpload を UpdatePanel 内に配置すると、ASP.NET は何らかの理由でエンコーディング タイプをまったく設定せず、空のままにします。

例えばdocument.forms[0].enctype = ''

したがって、フォームを投稿すると、ファイルのアップロードで何をすべきかわかりません。

ダミーの AsyncFileUpload を Default.aspx ページに配置することにより、ASP.NET は FileUpload コントロールの存在を検出し、それに応じてエンコード タイプを設定します。

例えばdocument.forms[0].enctype = 'multipart/form-data'

于 2011-03-01T05:30:02.973 に答える