2009-03-03 4 views
2

Ich habe mich davor gescheut, meinen ASP.NET-Seiten Eigenschaften hinzuzufügen. Es schien mir nie eine großartige Idee zu sein. In letzter Zeit habe ich jedoch die Praxis in einigen Anwendungsbeispielen gesehen. Ist meine Abneigung gegen das Hinzufügen von benutzerdefinierten Eigenschaften zu einer Seite unberechtigt oder ist dies eine "es hängt" -Situation?ASP.NET-Seiteneigenschaften Gute Idee oder schlechte Idee

Antwort

3

Die Eigenschaft, die Sie beachten müssen, ist, dass sie für den gesamten Seitenlebenszyklus gilt. Dies macht sie beide sehr nützlich (legen Sie eine Eigenschaft in einem frühen Stadium des Lebenszyklus und es ist immer noch gültig) und gefährlich (es ist einfach, auf eine Eigenschaft zuzugreifen, bevor es festgelegt ist, oder nicht realisieren, eine andere Lebenszyklusphase änderte es auf Sie).

Ein Bereich, in dem ich gesehen habe, dass Eigenschaften mit großer Wirkung verwendet werden, ist eine gute typsichere Möglichkeit, die Abfragezeichenfolge und die Sitzung zu umbrechen. Definieren Sie Eigenschaften für jeden Ihrer erwarteten Abfragezeichenfolgen- oder Sitzungswerte und es wird zukünftigen Entwicklern sehr klar, was erwartet und verfügbar ist.

Eine andere häufige Verwendung ist das Umbrechen von ViewState-Elementen. Ich erwarte, dass Sie diese in Samples sehen, da die meisten Samples davon ausgehen, dass ViewState aktiviert ist.

1

Warum wäre es schlecht? Eigenschaften sind wirklich nur Methoden und ich bin sicher, dass Sie der Seite ständig Methoden hinzufügen.

5

Ich sehe nichts falsch mit der Verwendung von Eigenschaften, um den Code auf einer Serverseite Seite aufzuräumen. Ich möchte Eigenschaften verwenden, um auf Informationen zum Sitzungsstatus oder zum Anzeigestatus zuzugreifen. Auf diese Weise ändere ich nur, wenn ich verändere, wie ich auf die Daten zugreife.

2

Asp.net unterstützt keine Konstruktor-basierte Injektion. Dies ist ein klares Szenario, in dem Sie asp.net -Eigenschaften verwenden möchten (wie Sie Property-basierte Injektion verwenden können).

Update 1: Hier ist ein ähnliches Szenario aber für Kontrollen - How to use Dependency Injection with ASP.NET Web Forms

Update 2: Es ist in Ordnung ist, sie zu verwenden, um Ansichtszustand oder Query-String-wickelt. Ich würde es mir jedoch genau ansehen, da Sie den Code-Behind nicht missbrauchen wollen. Wenn Sie sehen, dass Sie eine der Wrapping-Eigenschaften im Codebehind oft verwenden, gibt es wahrscheinlich zu viel Code im Codebehind. Wenn Sie es auf diese Weise betrachten, haben Sie den Nebeneffekt, wiederholtes Casting/Parsing zu vermeiden, das mit diesen Eigenschaften in Verbindung gebracht werden kann.

0

Ich verwende Eigenschaften auf meinen asp.net-Seiten für den Zugriff auf Session, Viewstate und Querystring. Es macht nur Sie weniger Code schreiben und erhöht die Lesbarkeit

2

Es gibt nichts falsch mit Eigenschaften auf einer Seite. Sie sehen vielleicht seltsam, da eine Seite selten als Objekt durch externen Code manipuliert wird, aber es kann getan werden. Daher können die meisten Eigenschaften auf einer Seite als privat markiert werden. Wie bei allen Dingen gibt es Ausnahmen.

Eines der größten Einsatz ich Objekte auf meiner Seite haben, wenn ein Ansichtsstatus Wert Verpackung:

protected string TaskName 
{ 
    get { return (string)ViewState["TaskName"] ?? string.Empty; } 
    set { ViewState["TaskName"] = value; } 
} 

In diesem Fall habe ich die Eigenschaft als „geschützt“ gekennzeichnet, die mich zugreifen können aus mein Markup.