asp.net:разница между runat=“server” и серверными элементами управления

StackOverflow https://stackoverflow.com/questions/877227

  •  22-08-2019
  •  | 
  •  

Вопрос

В чем разница в функциональности между

<asp:Button id="button1" Text="Click me" runat="server" OnClick="submitEvent" />

и

<input type="button" id="button1" runat="server" value="Click me" />

Имеет ли ввод с атрибутом runat="server" другие или ограниченные свойства и методы?

Спасибо!

Это было полезно?

Решение

Первый из них создает System.Web.UI.WebControls.Button в то время как второй создает System.Web.UI.HtmlControls.HtmlInputButton.

Оба являются серверными элементами управления, но элементы управления в WebControls пространство имен обычно обладает немного большей функциональностью, чем элементы управления в HtmlControls пространство имен.Обычно они помещают некоторые данные в ViewState чтобы отслеживать их состояние, и у них есть события обратной передачи на стороне сервера.

Каждый элемент управления в HtmlControls пространство имен в точности соответствует HTML-элементу, в то время как элементы управления в WebControls пространство имен может отображаться по-разному в зависимости от того, что может поддерживать браузер, запрашивающий страницу.

Другие советы

Кнопка, представленная <asp:Button runat="server".../> будет преобразован в элемент управления веб-сервера с расширенной моделью состояния и различными свойствами и методами, который имеет более четкое представление в реальном мире, например, Button.Text = "Нажмите на меня".

Кнопка, представленная <input type="button" runat="server"..../> будет преобразован в html серверный элемент управления, представленный HtmlInputButton;with имеет ограниченные свойства, методы и события.Большинство свойств напоминают html-эквиваленты типа Button.Значение="Щелкните меня".

Обратите внимание, что элементы на странице разметки предварительно обрабатываются / компилируются перед использованием и будут преобразованы в представление класса, где каждый элемент представлен элементом управления.Вы можете получить доступ к элементам управления на стороне сервера, которые идентифицируются тегом runat ="server" из исходного кода, поскольку они будут иметь соответствующий серверный элемент управления (web / html), другой статический контент, включая <input type="button.../> тег без runat="server" будет представлен в виде LiteralControl.

Первая строка - это ASP.NET, последняя - простой XHTML.

Первый анализируется и интерпретируется на стороне сервера, после чего генерируется HTML-код, который в значительной степени соответствует вашему второму примеру.ASP.NET Кнопка на самом деле немного больше, чем легкая оболочка для функциональности кнопки ввода HTML, и ее следует использовать везде, где вам нужно обрабатывать Click событие на стороне сервера (или, в общем случае, любые события), и обычно это правильный путь, поскольку вы позволяете ASP.NET абстрагировать идею кнопки на вашей странице для вас.

функциональность обоих элементов управления одинакова с той разницей, что первый - это элемент управления .net, а второй - элемент управления html, который можно сделать servercontrol с помощью

runat="сервер".

и первый из них богат событиями и методами, чем второй....

С таким элементом управления не связано никаких серверных событий, но вы можете использовать его в codebehind для изменения его свойств.

Ваш второй вариант, вероятно, даже не сработает.runat="server" будет отображаться непосредственно в выводе HTML, где он не будет иметь никакой функциональности и только нарушит проверку HTML.

input - это HTML-элемент, который имеет только HTML-свойства и определенно не содержит каких-либо методов.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top