0

c# を使用して、ASP.NET 4 で Ajax ファイル アップロード コントロールを使用しています。同じページにも更新パネルがありますが、アップロード コントロールは更新パネル内にありません。アップロード コントロールは更新パネルの外にあります。

更新パネルには、ここでも説明されているキャプチャ イメージと送信ボタンがあります。内部の送信ボタンには、アップロード コントロールからファイルを保存するためのコードが含まれています。

問題は、ユーザーがアップロード コントロールを使用してアップロードするファイフを参照し、間違ったキャプチャ値を入力して送信すると、新しいキャプチャ イメージが入力用に非同期でユーザーに提供されることです。アップロード コントロールはファイルのアップロード バーにパスを表示しますが、プログラミング側ではファイルを検出しません。

送信ボタンのコード:

if (AsyncFileUpload.HasFile)
{
  // upload logic and other stuff
}
else
{
  // lblShow.Text = "There is no file to be uploaded";
}

たとえば、上記のコードはelse部分を実行して「アップロードするファイルがありません」と言います。ページはまだ完全には更新されておらず、ファイル アップロード コントロールにはファイルのパスが表示されています。この問題で私を助けてください。

4

2 に答える 2

0

ファイル アップロード コントロールで Ajax 更新パネルを使用している場合は、ポストバック トリガーを更新パネル トリガーに追加する必要があります。お気に入り:

<Triggers>
        <asp:PostBackTrigger ControlID="btnContactSubmit"/>                                                         
</Triggers>
于 2011-09-05T08:22:30.233 に答える
0

あなたのコードの場合:

if (AsyncFileUpload.HasFile)
{
  // upload logic and other stuff
}
else
{
  // lblShow.Text = "There is no file to be uploaded";
}

イベント内にある場合でも、リフレッシュPage_Loadなどの部分的なポストバックのコンテキストで実行されます。UpdatePanel完全なフォームの送信がブラウザから実行されていない場合 (ファイルのアップロードが の外にあると述べた場合UpdatePanel)、ページはファイルのアップロードを検出しません。

私が混乱しているのは、なぜAsyncFileUpload外にあるときにそれを呼び出したのUpdatePanelですか?

編集:

あなたの答えに基づいて、あなたの Captcha の実装は、現在のように非同期ファイルのアップロードで機能するとは思いません。

UpdatePanel はキャプチャ結果を評価するために非同期 POST を実行しますが、UpdatePanel 内にないため、ファイルの内容はまだ POST しません。次に、サーバー側のコードがキャプチャ結果を評価し、HTML を返すか、async-response でブラウザにリダイレクトします...最終的にフォームを送信してファイルを取得する必要がある場所。

async-response で JavaScript をページに送り返して完全なフォーム送信をトリガーするコードを作成し、フォーム送信時に CAPTCHA を再評価する準備ができていない限り、おそらく , を削除した方がよいでしょUpdatePanelう私の意見。

于 2011-09-05T08:23:38.230 に答える