Подтвердить что ты не робот

Когда использовать runat = "server" в обычном HTML

Всегда ли целесообразно использовать runat = "server" на стандартном элементе HTML вместо истинного элемента управления ASP.NET? Я полностью контролирую настройку html/text нормального элемента, поэтому почему бы мне не использовать его вместо "неуклюжего" элемента управления ASP.NET WebForms?

Если кто-то лучше другого, некоторые интересные моменты, которые я хотел бы знать:

  • Различия в производительности
  • Различия в функциональности
  • Другие отличия не так очевидны?

Пример разницы:

<asp:Literal ID="mySpecialHtml" runat="server" />

<div id="mySpecialHtml" runat="server" />
4b9b3361

Ответ 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.