Почему runat = "server" требуется для элементов управления в файлах скинов? - PullRequest
3 голосов
/ 28 ноября 2011

Как в заголовке написано .. почему?

Я знаю, почему это требуется для обычных элементов управления ASP.NET, по этому поводу есть множество вопросов.

Но поскольку вы можете определять только элементы управления .NET (без нормальной разметки HTML) в файлах обложки, почему runat="server" все еще требуется для каждого элемента управления в файле обложки?

Это не имеет ничего общего со стилями или темами. Есть ли причина, по которой мне все еще нужно добавить его ко всем элементам управления в файлах скина? Кто-нибудь знает, что с ним происходит «за кадром»?

1 Ответ

6 голосов
/ 29 ноября 2011

Опять же, вы должны понимать, как работают языки на стороне сервера.

Все теги ASP.NET преобразуются в понятный браузеру HTML (браузер не имеет представления о том, чтоэто, например) препроцессором на стороне сервера до отображения страницы.Это означает, что все элементы управления / модули / все объекты, обслуживаемые ASP.NET, которые не , а просто HTML , должны иметь эти атрибуты.

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

A файл скина - это специальная концепция ASP.NET для тегов, определенных в рамках.Следовательно, имеет смысл, что эти теги должны иметь «runat = server».MS могла бы написать специальное правило в свой препроцессор, например, «если это файл скина, предположим, что это все теги ASP» ... но такие правила не масштабируются.Кроме того, это плохая документация.

Как веб-разработчик, вы должны понимать, какие из ваших тегов на самом деле являются HTML, а какие удобными тегами, предоставляемыми платформой.Атрибут "runat=server" делает это разграничение явным.

Вы можете добавить runat = "server" к простым HTML-тегам, таким как , но, как правило, причин для этого мало, и это плохая практика.

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

...