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 и, безусловно, никаких методов.