Склонен съм да избягвам добавянето на свойства към моите ASP.NET страници. Никога не ми е изглеждало като страхотна идея. Наскоро обаче видях практиката, използвана в няколко примерни приложения. Неоправдано ли е моето отвращение към добавяне на персонализирани свойства към страница или това е ситуация „зависи“?
Свойства на ASP.NET страница Добра идея или лоша идея
Отговори (6)
Нещото за свойствата, което трябва да запомните, е, че те продължават през целия жизнен цикъл на страницата. Това ги прави едновременно много полезни (задайте свойство в началото на жизнения цикъл и то все още е валидно по-късно) и опасни (лесно е да получите достъп до свойство, преди да е зададено, или да не осъзнаете, че друга фаза на жизнения цикъл го е променила върху вас).
Една област, в която съм виждал свойства, използвани с голям ефект, е като добър безопасен за тип начин за обвиване на низа на заявката и сесията. Дефинирайте свойства за всяка от вашите очаквани стойности на низ на заявка или сесия и ще стане много ясно за бъдещите разработчици какво се очаква и е налично.
Друга често срещана употреба е обвиване на ViewState елементи. Очаквам, че това е мястото, където ги виждате в пробите, тъй като повечето проби са склонни да приемат, че ViewState е включен.
Не виждам нищо лошо в използването на свойства за почистване на кода на страница от страната на сървъра. Харесва ми да използвам свойства за достъп до информация за състояние на сесия или състояние на изглед, по този начин, ако променя начина, по който осъществявам достъп до данните, променям само едно място.
Asp.net не поддържа инжектиране, базирано на конструктор. Това е ясен сценарий, при който искате да използвате свойства на asp.net (тъй като можете да използвате инжектиране, базирано на свойства).
Актуализация 1: Ето подобен сценарий, но за контроли - Как да използвате зависимостта Инжектиране с ASP.NET уеб формуляри
Актуализация 2: Добре е да ги използвате за обвиване на viewstate или низ на заявка. Все пак бих го разгледал внимателно, тъй като не искате да злоупотребявате с кода отзад. Ако видите, че използвате едно от свойствата за обвиване на кода зад много пъти, вероятно има твърде много код в кода зад. Гледайки го по този начин, има страничен ефект от избягване на повторно кастинг/анализ, който може да бъде свързан с тези свойства.
Няма нищо лошо в свойствата на страницата. Може да изглеждат странни, тъй като страницата рядко се манипулира като обект от външен код, но може да се направи. Като се има предвид това, повечето свойства на страницата могат да бъдат маркирани като частни. Както всички неща, има изключения.
Една от най-големите употреби, които имам за свойства на страницата си, е когато обвивам стойност на ViewState:
protected string TaskName
{
get { return (string)ViewState["TaskName"] ?? string.Empty; }
set { ViewState["TaskName"] = value; }
}
В този случай съм маркирал свойството като „защитен“, което ми позволява достъп до него от моето маркиране.
Защо би било лошо? Свойствата са наистина само методи и съм сигурен, че добавяте методи към страницата през цялото време.
Използвам свойства на моите asp.net страници за достъп до Session, Viewstate и querystring. Това просто ви кара да пишете по-малко код и увеличава четливостта