Свойства страницы ASP.NET - хорошая или плохая идея

Я обычно избегал добавления свойств на свои страницы ASP.NET. Мне это никогда не казалось отличной идеей. Однако недавно я увидел, как эта практика применяется в нескольких примерах приложений. Было ли мое отвращение к добавлению настраиваемых свойств на страницу необоснованным или это случайная ситуация?


person ahsteele    schedule 03.03.2009    source источник


Ответы (6)


О свойствах нужно помнить, что они действуют в течение всего жизненного цикла страницы. Это делает их как очень полезными (установите свойство на ранней стадии жизненного цикла, и оно остается действительным позже), так и опасными (легко получить доступ к свойству до того, как оно будет установлено, или не осознавать, что другая фаза жизненного цикла изменила его на вас).

Одна из областей, в которой я видел, как свойства, используемые с большим эффектом, - это хороший типобезопасный способ обернуть строку запроса и сеанс. Определите свойства для каждой ожидаемой строки запроса или значений сеанса, и будущим разработчикам станет ясно, что ожидается и что доступно.

Другое распространенное использование - обертывание элементов ViewState. Я полагаю, что именно здесь вы видите их в примерах, поскольку в большинстве примеров предполагается, что ViewState включен.

person Joel Coehoorn    schedule 03.03.2009

Я не вижу ничего плохого в использовании свойств для очистки кода на странице на стороне сервера. Мне нравится использовать свойства для доступа к информации о состоянии сеанса или о состоянии просмотра, таким образом, если я изменяю способ доступа к данным, я изменяю только одно место.

person JoshBerke    schedule 03.03.2009

Asp.net не поддерживает инъекцию на основе конструктора. Это очевидный сценарий, в котором вы хотите использовать свойства asp.net (поскольку вы можете использовать внедрение на основе свойств).

Обновление 1. Вот аналогичный сценарий, но для элементов управления - Как использовать зависимость Инъекция с помощью веб-форм ASP.NET

Обновление 2: их можно использовать для обертывания состояния просмотра или строки запроса. Я бы внимательно посмотрел на это, так как вы не хотите злоупотреблять программным кодом. Если вы видите, что много раз используете одно из свойств оболочки в выделенном коде, вероятно, в нем слишком много кода. Если смотреть на это с такой точки зрения, есть побочный эффект, заключающийся в том, что можно избежать повторного приведения / синтаксического анализа, который может быть связан с этими свойствами.

person eglasius    schedule 03.03.2009

Нет ничего плохого в свойствах на странице. Они могут показаться странными, поскольку внешний код редко манипулирует страницей как объектом, но это можно сделать. При этом большинство свойств на странице можно пометить как частные. Как и все, есть исключения.

Одно из самых больших применений свойств на моей странице - это упаковка значения ViewState:

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

В этом случае я пометил свойство как «защищенное», что позволяет мне получить к нему доступ из моей разметки.

person andleer    schedule 03.03.2009

Почему это должно быть плохо? Свойства - это на самом деле просто методы, и я уверен, что вы постоянно добавляете методы на страницу.

person Andrew Hare    schedule 03.03.2009

Я использую свойства на своих страницах asp.net для доступа к Session, Viewstate и querystring. Это просто заставляет писать меньше кода и повышает читаемость.

person Sergio    schedule 03.03.2009