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%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).
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.
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.
Tags und Links asp.net file-upload