MasterPage - Недостаток ссылки на элементы управления как свойства? - PullRequest
1 голос
/ 10 января 2011

В моей ASP.Net MasterPage у меня иногда есть элементы управления, к которым должен обращаться большинство страниц.Теперь вместо того, чтобы использовать это для доступа к элементу управления

((Label)this.Page.Master.FindControl("lblBreadCrumb")).Text = "foo";

, я стараюсь поместить свойство в MasterPage со ссылкой на элемент управления, установить директиву @MasterType на странице и получить доступ к элементу управления следующим образом:

this.Master.BreadCrumb.Text = "foo";

Мне кажется, что этот подход намного проще в использовании, но я никогда не видел, чтобы кто-то делал это так, поэтому мне интересно, есть ли какая-то веская причина, по которой я скучаю?

Ответы [ 2 ]

1 голос
/ 10 января 2011

Использование свойств - гораздо лучшая идея, чем использование FindControl по нескольким причинам. Я рад, что вы используете этот подход! Наиболее убедительная причина использования свойств - допустим, вы изменили имя элемента управления или удалили его все вместе. Теперь у вас есть ошибка компилятора, которую гораздо легче обнаружить. Например, если вы переименуете lblBreadCrumb и используете FindControl, компилятор не поймает эту ошибку, и вместо этого ваше приложение завершится с ошибкой во время выполнения. Перехват ошибок во время компиляции - отличная особенность языка.

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

1 голос
/ 10 января 2011

Нет, это отличный подход, когда многие страницы будут получать к нему доступ.

Иногда я могу абстрагироваться немного больше. Например, вместо простого доступа к элементу управления, я могу просто создать свойство на главной странице, например BreadCrumbText.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...