Laden...

2 Files hochladen und an eine weitere ASPX Seite leiten

Erstellt von Bionic vor 16 Jahren Letzter Beitrag vor 16 Jahren 1.453 Views
B
Bionic Themenstarter:in
214 Beiträge seit 2005
vor 16 Jahren
2 Files hochladen und an eine weitere ASPX Seite leiten

Hi zusammen,

irgendwie steh ich mächtig auf dem Schlauch.
Ich hab auf meiner ersten aspx Seite 2 FileUpload Controls, mit denen ich jeweils eine XML Datei hochladen möchte. Beim Klick auf den Submit Button möchte ich den Inhalt von beiden Dateien an eine weitere aspx Seite leiten.
Diese zweite Seite ist für die Darstellung der Daten gedacht. Da ich mich gerade in ASP reinfuchse, weiß ich leider noch nicht, wie ich die Daten von einer Seite an eine andere Übergeben kann?!
Hab hier im Forum einige Treffer gefunden, jedoch beziehen sich die meisten auf Formluardaten, die vom Benutzer eingegeben wurden.
Kann mir vll einer ein Stichwort geben, wonach ich suchen solle?

Danke im voraus - grüße Bionic

.:: SilvrGame - Browsergame Development with Silverlight
.:: Bionic's blOg

1.130 Beiträge seit 2005
vor 16 Jahren

Hallo Bionic,

Grundsätzlich hast du mehrere Möglichkeiten:

  • Daten in Datenbank speichern
  • Daten im Dateisystem speichern
  • Daten in Session ablegen

Die Entscheidung welches Vorgehen in diesem Fall das Beste ist, hängt von mehreren Faktoren - wie z.B. Umfang der Daten - ab.

B
Bionic Themenstarter:in
214 Beiträge seit 2005
vor 16 Jahren

Hi .Kai 😉
Hmm alle 3 Möglichkeiten sprechen mir nicht zu 😕
Temporär kann ich die Daten nicht irgendwie weitergeben? Sessions kommen nicht in Frage, da die Möglichkeit besteht, dass die Applikation auf einer Serverfarm läuft und die Kommunikation über Proxy geht.
Datenbank und Dateisystem würd ich auch gern auschließen, es sind nur ein paar Zeilen XML, nichts aufwendiges.

Meine folgende Situation: Ich habe 2 XML Dateien. Die eine gibt die Struktur an, die andere beinhaltet Daten. Auf meiner Seite habe ich unter dem Submit Button ein Placeholder, indem ich dann meine UserControl platziere. Ich lese die Struktur der ersten XML Datei ein, pro richtig gefundenen Knoten wird ein UserControl verwendet, welcher ein Label und eine DropDownList beinhaltet. Die DropDownList wird mit Datenstätzen aus der zweiten XML Datei befüllt.
Klicke ich auf den Submit Button, so wird mir die XML Struktur als Baum dargestellt, nun hat der User die Möglichkeit per DropDownList das Attribut zu jedem Knoten zu ändern. Ist dies getan, soll aus den geänderten Daten eine neue XML Datei mit der Struktur und den Daten des UserControl Baumes geschrieben werden.

Ich habe es bis jetzt so, dass ich alles auf einer Seite habe. Wollte aber jeden Schritt ( 1. Dateien hochladen - 2. Baum darstellen - 3. XML Datei schreiben) auf jeweils einer seperaten Seite realisieren.
Mach ich es mir selber kompliziert oder gibt es einen eleganteren Weg?

.:: SilvrGame - Browsergame Development with Silverlight
.:: Bionic's blOg

1.130 Beiträge seit 2005
vor 16 Jahren

Hallo Bionic,

warum schließt du Sessions aus? Auch wenn die Anwendung auf einer Serverfarm läuft spricht nichts gegen Sessions.

B
Bionic Themenstarter:in
214 Beiträge seit 2005
vor 16 Jahren

Die Applikation wird in ein bestehendes System implementiert und aus irgendeinem Grund soll ich das ohne Sessions machen 😕

Ich hab mir überlegt, ich gebe meinem <form> tag auf der ersten Seite ein Target mit, auf die 2. Seite und dort habe ich dieselben 2 FileUpload Controls liegen, als hidden. Dann könnt ich doch auf meine Daten zugreifen oder?

.:: SilvrGame - Browsergame Development with Silverlight
.:: Bionic's blOg

1.130 Beiträge seit 2005
vor 16 Jahren

Hallo Bionic,

arbeitest du mit ASP.NET 2.0? Wenn ja, dann schau' dir PostBackUrl genauer an. Damit solltest du dein Problem ebenfalls lösen können.

B
Bionic Themenstarter:in
214 Beiträge seit 2005
vor 16 Jahren

Jopp ASP.NET 2.0. PostBackUrl könnte das Stichwort gewesen sein, danke dir Kai 😉

Grüße Bionic

.:: SilvrGame - Browsergame Development with Silverlight
.:: Bionic's blOg

B
Bionic Themenstarter:in
214 Beiträge seit 2005
vor 16 Jahren

Das mit den File hochladen hat nun geklappt.

So hab ich das nun gelöst:

Es werden jetzt nicht mehr 2, sondern nur 1 Datei hochgeladen. Da die andere eh statisch war, haben wir sie auf den Server verfrachtet.
Der Benutzer wählt nun eine Datei aus, gibt einen Templatenamen ein, wir lesen die vom Benutzer hochgeladenen XML Datei aus und generieren uns auf dem Server eine neue XML Datei mit dem eingegebenen Templatenamen des Benutzers als Dateinamen. Nach erfolgreichem Generieren listen wir die Datei als Link zu einer anderen ASP Seite auf. Der zweiten ASP Seite, die für das Darstellen der XML Struktur zuständig ist, übergeben wir mittels URL Parameter den Dateinamen der zuvor generierten XML Datei.

Auf der zweiten ASP Seite ist ein Placeholder für mein UserControl, dass ein Label, eine DropDownList und wiederrum ein Placeholder, für die ChildNodes, beinhaltet.
Ich überschreibe die OnInit() Methode, dort hole ich mir den Parameter vom Request raus und baue mir meinen Pfad zur XML Datei auf. Lese diese ein und generiere mir die XML Struktur mittels meines UserControls.

Soo, das klappt auch alles wunderbar.
Nun hat der Benutzer die Möglichkeit die Werte in der DropDownList jedes Controls zu ändern. Danach klickt er auf ein Button und aus diesem UserControl will ich mir eine neue XML Datei schreiben, mit den geänderten Werten des Users.
Die Struktur des Baumes ist statisch und wird ja aus der XML Datei geladen. Sprich ich müsste jetzt meine Struktur durchlaufen, schauen ob ich das dazu passende Control finde und die Werte aus dem Control in meine Struktur packen.
Danach schreibe ich mir aus meiner Struktur eine neue XML Datei.
Und hier kommt das riesen Problem, dass ich einfach nicht in den Griff bekomme.

Wer der User auf den Button klickt, werden die Werte, die er eingestellt hat behalten und nach dem erneuten Laden der Seite ist es so, wie der User es hatte. Die Frage ist nur, wie komme ich nach dem Buttonklick an die Controls bzw. DropDownList ran?
Da bin ich regelrecht am Verzweifeln 😕

Bin wie immer über jeden Hinweis dankbar.

Grüße Bionic

.:: SilvrGame - Browsergame Development with Silverlight
.:: Bionic's blOg

1.130 Beiträge seit 2005
vor 16 Jahren

Hallo Bionic,

ich hoffe, ich habe dich korrekt verstanden:
Controls kannst du mit Hilfe der FindControl Methode eines jeden Controls 🙂 finden und nach einem entsprechenden Cast ganz normal verwenden.

B
Bionic Themenstarter:in
214 Beiträge seit 2005
vor 16 Jahren

Hi Kai, auch hier 🙂

Oh mann, du hast mir grad die Augen geöffnet. Nach dem Button Klick baue ich den Baum nochmal auf, die Usewerte bleiben drin. Ich prüfe ob es ein PostBack ist, falls ja, laufe ich meine BaumStruktur durch und schaue mit der FindControl() Methode nach, ob ich ein passendes Control finde. Wenn ja, update ich meine Struktur.

Nun kann ich mich jetzt an das Schreiben der neuen XML Datei hängen. Was ich noch wissen würde, ist es richtig, dass ich das alles in der OnInit() Methode mache und nichts in Page_Load(object sender, EventArgs e) Methode drin stehen hab?

//--EDIT
Kann es sein, dass wenn ich ein Control im Control verschachtele, ich diesen verschachtelten Control über seine ID, die ich ihm zuvor übergeben habe, nicht finde? Kann es sein, dass die ID des verschachtelten Controls sich zusammensetzt aus der ID des darüberliegenden Controls?
Ich finde nämlich nur das root Control, alle anderen sind nicht auffindbar 😕

Danke dir nochmal 😉

.:: SilvrGame - Browsergame Development with Silverlight
.:: Bionic's blOg