2
<asp:ScriptManager ID="ScriptManager1" runat="server">
</asp:ScriptManager>
<asp:UpdatePanel runat="server">
<Triggers>
<asp:PostBackTrigger ControlID="Button1" />
</Triggers>
    <ContentTemplate>

<asp:MultiView ID="MultiView1" runat="server" 
                 ActiveViewIndex="0">           
    <asp:View ID="View1" runat="server">
        <asp:Button Text="next"
            runat="server" onclick="Unnamed1_Click" />
    </asp:View>
    <asp:View ID="View2" runat="server">
    <asp:Button ID="Button1" runat="server" onclick="Button1_Click" Text="Button" 
        style="width: 56px" />
    <asp:FileUpload ID="fileupload2" runat="server" />
    </asp:View>
</asp:MultiView>
 </ContentTemplate>
</asp:UpdatePanel>

コードビハインドは

 protected void Button1_Click(object sender, EventArgs e)
    {
        if (fileupload2.HasFile)
        {
            //code..
        }
    }
    protected void Unnamed1_Click(object sender, EventArgs e)
    {
        MultiView1.ActiveViewIndex = 1;
    }

初めて画像をアップロードするためにButton1をクリックすると、fileupload2.HasFileが「false」を返します

ページを再度更新せずに同じ画像をアップロードしようとすると、fileupload2.HasFile は「true」を返します。

View1 で正常に動作しています。問題はビュー 2 にあります

その fileupload の問題は何ですか?

4

6 に答える 6

2

ページのライフサイクルの早い段階でボタン コントロールをRegisterPostBackControlに登録してみてください。

   protected void Page_Init(object sender, EventArgs e)
   {
       ScriptManager1.RegisterPostBackControl(Button1);
   }

関連項目:

FileUpload と UpdatePanel: ScriptManager.RegisterPostBackControl が 2 回目に機能します。

于 2011-03-02T08:36:43.037 に答える
0

AjaxControlToolkitからAsyncFileUploadコントロールを試しましたか?

http://www.asp.net/ajax/ajaxcontroltoolkit/Samples/AsyncFileUpload/AsyncFileUpload.aspx

従来のFileUploadは、AJAXおよびUpdatePanelsでは実際にはうまく機能しません。

于 2011-03-02T07:49:52.287 に答える
0

http://forums.asp.net/p/1105208/1689084.aspxから取得

UpdatePanel コントロール内で FileUpload コントロールを使用するには、ファイルを送信するポストバック コントロールをパネルの PostBackTrigger コントロールに設定します。

または、iframe を使用することもできます。特定のコードは今手元にありませんが、必要であれば、古いドライブを開く機会があれば掘り出すことができます。

ファイルがビュー 2 で使用できなくなった場合の問題については、おそらくビュー 1 でファイルを保存してから、後でビュー 2 で取得しようとすることができます。その理由は、おそらく、ファイルがビュー 1 で一度送信され、決して送信されないためです。ビュー 2 で再送信されました。

于 2011-03-02T08:00:07.110 に答える
0

問題は、UpdatePanel がその内部のコントロールからのすべての要求を AJAX 要求に「変換」し、FileUpload が AJAX で機能しないことが最も考えられます。"fileupload updatepanel"をGoogle で検索すると、多数の記事と考えられる回避策が表示されます。

View2 で機能しない理由は、ID「Button1」のボタンに、UpdatePanel のトリガー セクションでトリガーが定義されているためです。ボタンにこのようなトリガーを定義すると、ボタンが「ajax化」されるため、ボタンを押すと、「通常の」ポストバックではなくAJAXリクエストが送信されます。

于 2011-03-02T07:27:24.417 に答える