简体   繁体   中英

ASP.NET FileUpload with precondtions (empty after PostBack)

I want to create a C# WebForm with a ASP.NET FileUpload Control and some Textboxes and a submit button. Idea: user selects a file, enters some data, on submit the form checks the data and if valid, it saves the file on the server otherwise an error message is displayed. There are so many posts about UpdatePanel Triggers etc. but not a working solution.

Here my code behind:

protected void Page_Load(object sender, EventArgs e) {
    // for FileUpload-Control outside UpdatePanel
    Page.Form.Attributes.Add("enctype", "multipart/form-data");
}

protected void Button1_Click(object sender, EventArgs e) {
    bool valid = true;
    string errorMessage = DateTime.Now.ToLongTimeString() + ": ";

    if (this.TextBox1.Text.Equals("")) {
        valid = false;
        errorMessage += "Missing Textbox1<br/>";
    }
    if (this.TextBox2.Text.Equals("")) {
        valid = false;
        errorMessage += "Missing Textbox2<br/>";
    }
    if (this.TextBox3.Text.Equals("")) {
        valid = false;
        errorMessage += "Missing Textbox3<br/>";
    }
    if (!this.FileUpload3.HasFile) {
        // is alway false!
        errorMessage += "Missing FileUpload3<br/>";
    }

    if (valid) {
        // never fires, because .HasFile is always false
        this.Label1.Text = "valid!";

        // do upload stuff
        this.FileUpload3.SaveAs("foobar");
    } else {
        this.Label1.Text = errorMessage;
    }
}

And here is my sample ASPX:

<form id="Upload" runat="server">
    <asp:ScriptManager ID="ScriptManager1" runat="server"></asp:ScriptManager>

    <asp:FileUpload ID="FileUpload3" runat="server" />

    <asp:UpdatePanel ID="UpdatePanel2" runat="server">
        <ContentTemplate>
            <asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
            <asp:TextBox ID="TextBox2" runat="server"></asp:TextBox>
            <asp:TextBox ID="TextBox3" runat="server"></asp:TextBox>
            <asp:Button ID="Button1" runat="server" Text="Button" OnClick="Button1_Click" /><br />
            <asp:Label ID="Label1" runat="server" Text=""></asp:Label>
        </ContentTemplate>
    </asp:UpdatePanel>
</form>

Does anyone see, why my FileUpload is always empty, although it's outside the UpdatePanel and I do have the required line in the Page_Load() event? If, could you adjust the code?

Thank you SiS

<form id="Upload" runat="server">
<asp:ScriptManager ID="ScriptManager1" runat="server"></asp:ScriptManager>

<asp:FileUpload ID="FileUpload3" runat="server" />

<asp:UpdatePanel ID="UpdatePanel2" runat="server">
    <ContentTemplate>
        <asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
        <asp:TextBox ID="TextBox2" runat="server"></asp:TextBox>
        <asp:TextBox ID="TextBox3" runat="server"></asp:TextBox>
        <asp:Button ID="Button1" runat="server" Text="Button" OnClick="Button1_Click" /><br />
        <asp:Label ID="Label1" runat="server" Text=""></asp:Label>
    </ContentTemplate>
</asp:UpdatePanel>
   <Triggers>
        <asp:PostBackTrigger ControlID="Button1" />
    </Triggers>

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM