Когда использовать runat = "server" в обычном HTML
Всегда ли целесообразно использовать runat = "server" на стандартном элементе HTML вместо истинного элемента управления ASP.NET? Я полностью контролирую настройку html/text нормального элемента, поэтому почему бы мне не использовать его вместо "неуклюжего" элемента управления ASP.NET WebForms?
Если кто-то лучше другого, некоторые интересные моменты, которые я хотел бы знать:
- Различия в производительности
- Различия в функциональности
- Другие отличия не так очевидны?
Пример разницы:
<asp:Literal ID="mySpecialHtml" runat="server" />
<div id="mySpecialHtml" runat="server" />
Ответы
Ответ 1
Оба являются элементами управления ASP.NET. Те, которые соответствуют элементам HTML, находятся в пространстве имен System.Web.UI.HtmlControls
, а веб-элементы управления находятся в пространстве имен System.Web.UI.WebControls
.
Элементы управления HTML более легки и соответствуют точному элементу HTML, в то время как веб-элементы управления имеют больше возможностей и могут отображаться как разные элементы HTML в зависимости от возможностей браузера и настроек элемента управления.
HTML-элемент управления отображается как один элемент HTML, а веб-элемент управления - как ноль или более HTML-элементов. Элемент управления Literal
, например, не отображается как элемент, он выводит только текст. Существуют другие элементы управления, которые сами по себе не создают какие-либо элементы, например элементы управления Repeater
и PlaceHolder
. С другой стороны, элемент управления CheckBoxList
, например, отображается как несколько элементов HTML, контейнер table
и input
для каждого флажка внутри него.
Примером элемента управления, который визуализируется с использованием разных элементов, является элемент управления TextBox
, который будет отображаться как элемент input
или textarea
в зависимости от его свойства TextMode
.
Веб-элементы управления имеют больше возможностей, но также используют больше ресурсов. У них больше свойств и поддержка таких вещей, как темы и привязка данных. Многие веб-элементы управления помещают данные в ViewState
, который отправляется как часть страницы. Если вы не будете осторожны, ViewState
может стать довольно большим и повлиять на время загрузки страницы.
Ответ 2
Единственная причина, по которой я использовал серверные элементы управления html, - это когда мне нужна гибкость в написании собственного html, но все же необходимо получить доступ к его свойствам в коде.
<div id="mySpecialHtml" runat="server" />
В коде позади:
mySpecialHtml.InnerHtml = "something else";
Ответ 3
Парсер ASP.NET интерпретирует стандартные элементы html w/runat = "server" как элементы управления html-сервера. Пример:
<a runat="server"></a>
интерпретируется как
<asp:HtmlAnchor runat="server"></asp:HtmlAnchor>
Итак, имейте в виду, что если вы используете runat = "server", чем используете соответствующий элемент управления HTML Server.
Кроме того, ASP.NET содержит набор элементов управления веб-сервера, то есть элемент управления HyperLink, который обеспечивает большую функциональность, дополнительные свойства, события и т.д., но в некоторых случаях может быть медленнее.
Ответ 4
Я предпочитаю использовать элементы управления html, когда на клиентской стороне больше работы, и используйте элементы управления asp.net, когда на стороне сервера больше работы (код позади).
Ответ 5
Я считаю, что ASP.NET использует другой набор элементов управления веб-сервера, который обычно имеет гораздо больше функциональности, но это действительно зависит от ваших предпочтений. Если ваша работа в основном на стороне сервера, я буду придерживаться элементов управления ASP.NET.