2010-12-20 9 views
1

Ich habe Mühe, klare Antworten auf die dynamische Erstellung der gleichen Seite immer wieder zu finden. Die Fragen und Stichproben, die ich gefunden habe, scheinen zu diesem Thema überall zu sein. Ich habe den Lebenszyklus studiert und habe immer noch keine klare Antwort, wohin Code gehen sollte.Dynamisch asp.net mit C# Seiten erstellen

Ich habe eine Masterseite und eine Inhaltsseite. Der gesamte Inhalt im Inhaltsbereich muss dynamisch erstellt werden (Textfelder, ddls, Seitenregisterkarten, Schaltflächen/onclick usw.).

Nachdem ein Benutzer Daten eingegeben und auf eine Senden-Schaltfläche geklickt hat, muss ich die Werte aus dem Formular lesen und die Seite vollständig neu erstellen (keine Steuerelemente zum aktuellen Inhalt hinzufügen/entfernen).

Meine Frage ist dann. Wo lege ich meinen Code ab, um die Seite zu erstellen? Kann ich in diesem Bereich IsPostBack verwenden, damit ich Inhalte mit Request.Form-Werten neu erstellen kann? Funktionieren meine Buttons _Click Events? Gibt es irgendwelche Arbeitsproben, auf die du mich hinleiten könntest?

Vielen Dank für das Feedback ...

Antwort

1

Ich weiß nicht, alle Antworten auf Ihre Fragen, aber ich hoffe, dass diese bekommen können Sie begonnen haben. Wenn Sie die Benutzeroberfläche dynamisch über Code generieren, geschieht dies in Init. Steuerelemente, die dynamisch in Init geladen werden, sind der Schlüssel, da zwischen init und load, beim Postback, viewstate für diese Steuerelemente geladen wird.

Das bedeutet, dass Sie die Seite bei jedem Postback neu erstellen müssen, damit sie mit der vorherigen Steuerelementstruktur übereinstimmt. Dekonfigurieren Sie sie nach dem Initialisieren, und erstellen Sie die neue Benutzeroberfläche neu, wenn sich die Benutzeroberfläche ändern soll. Dies liegt daran, dass die Baumstruktur überprüft wird, um festzustellen, ob es sich um die gleiche Benutzeroberfläche handelt. Nun, wenn Sie Viewstatus nicht benötigen, ist dies möglicherweise nicht so ein Problem. Ich habe dies ohne viewstate nicht überprüft, um zu sehen, ob es sich anders verhält.

Es hängt davon ab, wie dynamisch Sie es brauchen, ob Sie Viewstate brauchen (ist ein großer Faktor).

HTH.

1

Versuchen Sie, die Kontrollen in der PreInit Methode Seite zu schaffen. "IsPostBack" sollte funktionieren und die Click-Event-Handler sollten auch funktionieren.

+0

PreInit ist der Weg, hier zu gehen. Die Steuerelemente werden im OnInit-Ereignis wiederhergestellt und die Eigenschaften werden den Steuerelementen zugewiesen, jedoch nur, wenn sie den gleichen Namen haben – citronas

0

Brians Ratschläge sind gut und Sie sollten ihnen folgen.

Dies könnte nicht wirklich Ihre Frage beantworten, aber ich füge es noch als Rat hinzu. Ich erstelle professionell ASP.net-Webanwendungen in einem ziemlich großen Umfang und kann aus meiner Erfahrung sagen, dass zu viel "Dynamik" normalerweise schlecht ist und vermieden werden sollte, weil es nur Komplexität einführt. Normalerweise möchten Sie möglicherweise UI-Teile in ASP.net-Benutzersteuerelementen verfügbar machen oder wenn Sie sie noch mehr wiederverwendbar machen möchten (wenn das ein Faktor ist), dann in ASP.net Server-Steuerelemente. Dann ersetzen Sie verschiedene von ihnen dynamisch, anstatt alles von Grund auf neu zu erstellen.

Verwandte Themen