2009-05-13 6 views
0

In all meinem Page_Load() Ereignisse Ich habe einGibt es eine schnelle Möglichkeit, herauszufinden, ob eine ASP.NET-Steuerelementeigenschaft durch Viewstate- oder normale Felder unterstützt wird?

if(!IsPostBack) 
{ 
    //code runs on initial get 
    //Set properties backed by viewstate 
} 
else 
{ 
    //Code runs on each get and post 
    //Set properties backed by ordinary fields 
} 

Gibt es eine schnelle Möglichkeit, dies zu tun Reflektor kurz, um zu bestimmen, Dokumentation zu lesen, oder um eine Testseite zu erstellen?

Ist es besser, eine Konvention zu akzeptieren, dass ViewState nicht wirklich existiert, weil Sie nicht wissen, ob es tut, ohne es auf all die potenziell 1000 von Eigenschaften zu untersuchen, die Sie möglicherweise in einer großen Branche festlegen müssen Anwendung?

Antwort

1

Dies scheint eher eine Designfrage zu sein - Wann ViewState zu verwenden. Da Sie die Quelle kennen, wissen Sie offensichtlich, welche Steuerelemente ViewState verwenden, so dass keine Vermutungen oder Ermittlungen erforderlich sind.

IsPostback ist der übliche Weg, um GET oder POST zu bestimmen. Sie können auch Request.HttpMethod untersuchen. Um zu entscheiden, wann ViewState verwendet werden soll, wird die Seite Postback vor dem Abschluss ihrer Aufgabe (d. H. Einige Steuerelemente basierend auf Benutzeraktionen aktualisieren)? Wenn Sie Postbck eingeben und die Kosten für das Auffüllen aller Felder zu hoch sind, verwenden Sie ViewState. Oder verwenden Sie Ajax-Aufrufe, um Postbacks zum Aktualisieren von Inhalten zu vermeiden.

Denken Sie daran, wenn Sie Postback durchführen, brauchen Sie ViewState nicht, um die Werte zu lesen. Die Steuerelemente werden in der Formularsammlung übergeben.

+0

Hmm, mich nicht wählen Ansichtszustand all 3rd-Party-Kontrollen ich verwenden kann nicht haben oder auch nicht, aber das gibt mir eine Idee zu versuchen, ein Verfahren zu schaffen, über die Kontrollen Viewstate Sammlung iterieren, um zu sehen, was da ist . – MatthewMartin