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

StackOverflow https://stackoverflow.com/questions/607046

  •  03-07-2019
  •  | 
  •  

Вопрос

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

Это было полезно?

Решение

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

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

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

Другие советы

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

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

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

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

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

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

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

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top