asp.net 如何在回发后维护FileUpload控件的状态

lb3vh1jj  于 2022-11-19  发布在  .NET
关注(0)|答案(2)|浏览(190)

我有多个更新面板(asp:UpdatePanel),在每个更新面板中,数据被插入并显示在相应的网格中(网格也包括在更新面板中)。
我有一个问题,我有一个asp:FileUpload控件,当数据被插入到这些更新面板时,它被重置,因为很少有控件有AutoPostBack=“true”
我已经找到了一个更接近的解决方案:-
http://www.codeproject.com/Tips/101834/How-to-Maintain-FileUpload-Control-s-State-after-P

if (Session["FileUpload1"] == null && theFile.HasFile)
        {
            Session["FileUpload1"] = theFile;
            lblStatus.Text = theFile.FileName;
        }
        else if (Session["FileUpload1"] != null && (!theFile.HasFile))
        {
            theFile = (FileUpload)Session["FileUpload1"];
            lblStatus.Text = theFile.FileName;
        }
        else if (theFile.HasFile)
        {
            Session["FileUpload1"] = theFile;
            lblStatus.Text = theFile.FileName;
        }

但是这个解决方案并没有解决我的问题,不幸的是,所有这三个if-else检查都没有通过条件。
我猜想,与FileUpload控件并行使用的UpdatePanel存在一些问题。
我已经搜索了很多文章,但它无法找到的决议。请帮助我在这方面尽早。

6ioyuze2

6ioyuze21#

您是对的!FileUpLoad在UpdatePanel中无法工作。您必须强制执行完全回发才能使其工作。您必须在updatePanel中添加一个asp按钮以保存选定的文件。在click事件中,将fileName保存在会话中。但要强制执行完全回发,您还必须向UpdatePanel中添加触发器。UpdatePanel应如下所示:

<asp:UpdatePanel ID="UpdatePanel4" runat="server">
        <ContentTemplate>
            <asp:FileUpload ID="FileUpload1" runat="server"/>
            <asp:Button ID="Button3" runat="server" onclick="Button3_Click" Text="Button" />
        </ContentTemplate>
        <Triggers>
            <asp:PostBackTrigger  ControlID="Button3" />
        </Triggers>
    </asp:UpdatePanel>

有关更多信息,您可以阅读以下URL:http://www.codeproject.com/Articles/16945/Simple-AJAX-File-Upload
希望对你有帮助...

watbbzwu

watbbzwu2#

我有同样的问题,并通过在页面加载事件中添加下面的行解决:

Page.Form.Attributes.Add("enctype", "multipart/form-data");

相关问题