Verbleibender Pfad des FileUpload-Steuerelements nach dem Postback

8

Ich habe ein FileUpload-Steuerelement und ein DropDownlist-Steuerelement in einem UpdatePanel, und wenn Benutzer eine Datei für das FileUpload-Steuerelement auswählen (noch kein Upload), wählt der Benutzer in der Zwischenzeit eine Option aus dem DropDownList-Steuerelement aus, die ein Postback verursacht! Nach dem Seitenpostback ist der im FileUpload-Steuerelement ausgewählte Pfad nicht mehr vorhanden. Wie kann ich den Pfad im FileUpload-Steuerelement beibehalten? Die Datei-Upload-Funktion funktionierte. Ich hoffe, dass der Pfad im FileUpload-Steuerelement während des Postbacks beibehalten werden kann.

Ich habe die folgende Lösung versucht, aber "FileUpload1.HasFile" gibt false an mich zurück.

%Vor%

aber die "Upload.HasFile" in der Upload-Funktion unten wird wahr, wenn es ausgeführt wurde.

%Vor%     
Fire Hand 30.09.2010, 09:55
quelle

6 Antworten

10

Der FileUpload behält seinen Wert nur bei, wenn Sie ihn aus dem UpdatePanel entfernen. Auf diese Weise können Sie immer noch alles mit der DropDownList und seinem AutoPostBack machen, aber das Ajax-Postback wird den FileUpload nicht aktualisieren, wodurch er leer wird. Auf diese Weise brauchen Sie die Postbacktrigger nicht mehr.

Setzen Sie UpdatePanel nur um den DropDownList und alle Steuerelemente, die das Postback ändern muss . Wenn diese Steuerelemente nicht nebeneinander liegen, können Sie mehrere UpdatePanels verwenden. Das AutoPostBack wird alle aktualisieren (Standardverhalten, Sie können dies sogar ändern).

    
Willem 05.10.2010 22:39
quelle
3

Muss der DropDown Postback? Ich denke, dass das Dateiupload aus Sicherheitsgründen nicht in updatePanels funktioniert. Siehe hier:

Ссылка

    
adrianos 30.09.2010 10:04
quelle
2

Ich denke, ich habe eine Lösung gefunden:

%Vor%

%Vor%     
y34h 09.10.2010 05:31
quelle
2

Setzen Sie Ihr Dateiupload-Steuerelement außerhalb des Updatepanels, damit das von der Dropdownliste verursachte asynchrone Postback das FileUpload-Steuerelement nicht beeinflusst. Beispiel (vereinfacht):

%Vor%

Zusätzliche Anmerkung: Sie haben anscheinend das FileUpload-Steuerelement in Ihrer Sitzung gespeichert. Es ist nicht wirklich eine gute Idee und könnte Ihnen ein Problem, z. wenn Ihre Benutzer dieselbe Seite mit mehreren Browser-Tabs / Fenstern öffnen. Und ich denke, was Sie tun möchten, ist das Speichern der Dateinamen / Filebyte / andere Attribute des Fileupload-Steuerelement, statt Speichern des ganzes Steuerelement in Sitzung, die essen wird mehr Ihrer Serverressourcen.

    
Gan 11.10.2010 01:15
quelle
1

Setzen Sie den UpdatePanel-Modus auf "conditional" und platzieren Sie ein weiteres UpdatePanel, das das Dropdown-Menü umschließt. Auf diese Weise wird das Dropdown die Datei nicht veröffentlichen.

Wenn Sie eine asynchrone Datei hochladen möchten, können Sie das nicht tun, aber Sie können es vortäuschen.

Sehen Sie sich dieses Projekt an, es ändert das Ziel von form , also nichts auf Ihrer Seite wird sich ändern, wird es zu einem iframe posten.

    
BrunoLM 06.10.2010 03:15
quelle
-1

Deaktivieren Sie das Dropdown-Menü, wenn der Benutzer das Formular abschickt.

  • Etwas wie ...

    OnClientClick="$ ('Dropdown'). attr ('deaktiviert', true); gibt true zurück;"

auf der Schaltfläche?

    
tim 30.09.2010 10:28
quelle

Tags und Links