Je veux créer un WebForm C# avec un contrôle ASP.NET FileUpload et quelques zones de texte et un bouton d'envoi. Idée: l'utilisateur sélectionne un fichier, saisit des données, soumet le formulaire vérifie les données et s'il est valide, il sauvegarde le fichier sur le serveur sinon un message d'erreur est affiché. Il y a tellement de messages à propos de UpdatePanel Triggers etc. mais pas de solution de travail.ASP.NET FileUpload avec des conditions préalables (vide après PostBack)
Voici mon code derrière:
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;
}
}
Et voici mon exemple 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>
Quelqu'un voit, pourquoi mon FileUpload est toujours vide, bien qu'il soit en dehors du UpdatePanel et je n'ai la ligne requise dans l'événement Page_Load()? Si, pourriez-vous ajuster le code?
Merci SiS
Le contrôle FileUpload exige une publication complète, alors assurez-vous que 'Button1' déclenche un. – VDWWD
J'ai ajouté un dans le UpdatePanel mais cela ne résout pas mon problème: Si je sélectionne un fichier mais que je manque TextBox3, le fichier FileUpload est vide après l'actualisation de la page. Je veux que le FileUpload garde ses données mais affiche un texte d'erreur. –
StehtimSchilf
Ce n'est pas comme ça que fonctionne FIleUpload. Vous devrez stocker le fichier dans un dossier temporaire sur le serveur si TextBox3 est vide. – VDWWD