it-swarm.com.de

Wie Verwenden des ASP.NET FileUpload-Steuerelements ordnungsgemäß

Ich versuche, das FileUpload-Steuerelement in ASP.NET zu verwenden

Hier ist mein aktuelles Namespace-Setup:

using System;
using System.IO;
using System.Collections.Generic;
using System.Linq;
using System.Text;

using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;

Und in meiner Klasse verwende ich nur:

FileUpload fileUpload = new FileUpload();

Keines der Attribute, die normalerweise Teil von FileUpload sind, scheint jedoch verfügbar zu sein ... wie .HasFile. Ich versuche, die Button-Klick-Methode im Code dahinter zu machen. Ich habe festgestellt, dass die Verwendung von .HasFile größtenteils im Code davor steht, jedoch war dies meines Erachtens nicht der Fall.

Weiß jemand warum?

18
Hosemeyer

ASP.NET-Steuerelemente sollten stattdessen in einer Aspx-Markup-Datei platziert werden. Das ist die bevorzugte Art, mit ihnen zu arbeiten. Fügen Sie Ihrer Seite also FileUpload Steuerelement hinzu. Stellen Sie sicher, dass alle erforderlichen Attribute vorhanden sind, einschließlich ID und runat:

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

Die Instanz von FileUpload1 wird automatisch in der automatisch generierten/aktualisierten * .designer.cs-Datei erstellt, die eine Teilklasse für Ihre Seite ist. Normalerweise müssen Sie sich nicht darum kümmern, was darin enthalten ist. Nehmen Sie einfach an, dass alle Steuerelemente auf einer Aspx-Seite automatisch instanziiert werden.

Fügen Sie eine Schaltfläche hinzu, die den Beitrag zurücksetzt:

<asp:Button ID="Button1" runat="server" Text="Button" onclick="Button1_Click" />

Dann gehen Sie zu Ihrer * .aspx.cs-Datei, in der Sie Ihren Code haben, und fügen Sie einen Klick-Handler hinzu. In C # sieht es so aus:

protected void Button1_Click(object sender, EventArgs e)
{
  if (this.FileUpload1.HasFile)
  {
    this.FileUpload1.SaveAs("c:\\" + this.FileUpload1.FileName);
  }
}

Und das ist es. Alle sollten wie erwartet funktionieren.

53
Maciej

Anstatt die FileUpload in Ihrem Code hinter der Datei zu instantiieren, deklarieren Sie sie einfach in Ihrer Markup-Datei (ASPX-Datei):

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

Dann können Sie auf alle Eigenschaften des Steuerelements zugreifen, z. B. HasFile.

1
wsanville

Das Hinzufügen eines FileUpload-Steuerelements aus dem Code dahinter sollte problemlos funktionieren, wenn die HasFile-Eigenschaft verfügbar sein sollte (beispielsweise in Ihrem Click-Ereignis). 

Wenn die Eigenschaften nicht verfügbar zu sein scheinen (entweder als Compiler-Fehler oder über Intellisense), verweisen Sie wahrscheinlich auf eine andere Variable, als Sie vermuten.

1
tbischel

Meine Lösung im Code dahinter war:

System.Web.UI.WebControls.FileUpload fileUpload;

Ich weiß nicht warum, aber wenn Sie FileUpload ohne System.Web.UI.WebControls verwenden verweist es auf YourProject.FileUpload not System.Web.UI.WebControls.FileUpload .

0
Josef

Ich habe bemerkt, dass, wenn die Intelligenz für ein Objekt nicht funktioniert, in der Klasse oberhalb der Zeile, an der Sie gerade arbeiten, ein Fehler auftritt.

Die andere Option ist, dass Sie das FileUpload-Objekt nicht als Instanzvariable instanziiert haben. Stellen Sie sicher, dass der Code:

FileUpload fileUpload = new FileUpload();

steht nicht innerhalb einer Funktion in deinem Code hinter.

0
Edison