Asp.net: разница между runat = "server" и сервером
В чем разница в функциональности между
<asp:Button id="button1" Text="Click me" runat="server" OnClick="submitEvent" />
и
<input type="button" id="button1" runat="server" value="Click me" />
Имеет ли вход с атрибутом runat = "server" другие или ограниченные свойства и методы?
Спасибо!
Ответы
Ответ 1
Первый создает System.Web.UI.WebControls.Button
, а второй создает System.Web.UI.HtmlControls.HtmlInputButton
.
Оба являются элементами управления сервером, но элементы управления в пространстве имен WebControls
обычно имеют немного больше функциональности, чем элементы управления в пространстве имен HtmlControls
. Обычно они помещают некоторые данные в ViewState
, чтобы отслеживать их состояние, и у них есть события обратной передачи на стороне сервера.
Каждый элемент управления в пространстве имен HtmlControls
точно соответствует элементу HTML, а элементы управления в пространстве имен WebControls
могут отображаться по-разному в зависимости от того, что может поддерживать браузер, запрашивающий страницу.
Ответ 2
Кнопка, представленная <asp:Button runat="server".../>
, будет преобразована в элемент управления веб-сервера с богатой моделью состояния и различными свойствами и методами, которые имеют более четкое представление в реальном мире, например Button.Text = "Click Me".
Кнопка, представленная <input type="button" runat="server"..../>
, будет преобразована в управление html-сервером, представленное HtmlInputButton; имеет ограниченные свойства, методы и события. Большинство свойств напоминают html-эквиваленты, такие как Button.Value = "Click Me".
Обратите внимание, что элементы на странице разметки предварительно обработаны/скомпилированы перед использованием и будут преобразованы в представление класса, где каждый элемент представлен элементом управления. Вы можете получить доступ к элементам управления на стороне сервера, которые идентифицируются тегом runat = "server" из кода, поскольку они будут иметь правильный соответствующий серверный контроль (web/html), другое статическое содержимое, включая тег <input type="button.../>
, с помощью runat = "сервер" будет представлен как LiteralControl.
Ответ 3
Первая строка - это ASP.NET, последний простой XHTML.
Первый получает синтаксический анализ и интерпретируется на стороне сервера, после чего генерируется код HTML, что в значительной степени соответствует вашему второму примеру. Кнопка ASP.NET на самом деле немного больше, чем световая оболочка над функциями кнопки ввода HTML и должна использоваться везде, где вам нужно обрабатывать событие Click
на стороне сервера (или в общем случае любых событий) и обычно путь, так как вы позволяете ASP.NET абстрактно идею кнопки на вашей странице для вас.
Ответ 4
функциональность обоих элементов управления одинакова с той разницей, что первый из них - это .net-управление, а второй - это html-элемент управления, который можно сделать servercontrol с помощью
Runat = "сервер".
и первый из них богат evants и методами второй....
Ответ 5
Нет событий сервера, связанных с такими элементами управления, но вы можете использовать его в коде для изменения его свойств.
Ответ 6
Ваш второй вариант, вероятно, даже не будет работать. runat = "server" будет отображаться непосредственно на выходе HTML, где он не будет иметь функциональности и будет только разорвать проверку HTML.
input - это элемент HTML, который имеет только свойства HTML и, безусловно, никаких методов.