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


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

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

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

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

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

<div id="mySpecialHtml" runat="server" />
5   21   2012-07-13 00:28:43

5 ответов:

Оба являются 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 может стать довольно большим и повлиять на время загрузки страницы.

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

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

В коде сзади:

mySpecialHtml.InnerHtml = "something else";

ASP.NET синтаксический анализатор интерпретирует стандартные html-элементы с тегом runat= "server" как элементы управления HTML-сервером. Пример:

<a runat="server"></a>

Интерпретируется как

<asp:HtmlAnchor runat="server"></asp:HtmlAnchor>

Итак, имейте в виду, что если вы используете runat="server", то вы используете соответствующий серверный элемент управления HTML.

Дополнительно, ASP.NET содержит набор веб-серверных элементов управления, то есть гиперссылок, которые обеспечивают больше функциональности, больше свойств, событий и т.д. но в некоторых случаях может быть медленнее.

Я предпочитаю использовать html-элементы управления, когда есть больше работы на стороне клиента, и использовать asp.net контролирует, когда есть больше работы на стороне сервера (код позади ).

Я верю ASP.NET использует другой набор веб-серверных элементов управления, которые обычно имеют гораздо больше функциональности, но это действительно зависит от ваших предпочтений. Если ваша работа в основном на стороне сервера, я бы придерживался ASP.NET управление.