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

Можем ли мы использовать несколько форм на веб-странице?

До сих пор на всех веб-страницах, которые я встречал, содержалось не более одного тега <form>. Почему не несколько? Я не могу придумать причины, по которым несколько форм не могут сосуществовать на одной и той же веб-странице.

Кроме того, чтобы быть конкретным для ASP.NET - почему все элементы управления сервером помещаются в тег <form>? Почему бы не разместить их где-нибудь еще?

Кроме того,

Я заметил, что в файле .aspx тег <form> имеет атрибут runat = server, в то время как обычный серверный элемент управления, такой как Button, также имеет его. Таким образом, <form> также является сервером. Но, как ни странно, я не могу найти его в Visual Studio Toolbox.

4b9b3361

Ответ 1

Может быть несколько форм, с hacks.

Это действительно недостаток WebForms. В ASP.NET MVC вы можете реализовать столько форм, сколько хотите (и это правильное и правильное поведение веб-страниц).

Причина, по которой все элементы управления сервером помещаются внутри тега <form>, позволяет механизму WebForms распознавать их, загружать их значения и сохранять их значения из/в ViewState. Практически вся инфраструктура управления контролем в WebForms основана на идее, что тег содержит все, что вы получаете от кода.

Ответ 2

Как уже отмечалось, это один из недостатков WebForms. Я также хочу отметить, что межстраничная проводка и групп проверки, вы обычно можете достичь желаемого поведения (для большинства "многоформатных" решений).

Ответ 3

В отношении дополнительного вопроса: <form runat="server"> анализируется как HtmlForm класс за кулисами, который наследует от HtmlControl, как и любой другой элемент HTML с runat="server".

В отличие от любого другого HtmlControl, на нем может быть только один экземпляр на странице, и он не появляется в панели инструментов, поскольку он автоматически добавляется к каждой новой Форме, которую вы создаете, поэтому она совершенно бессмысленна.

Ответ 5

много несерверных форм - вы можете, но только одна форма сервера runAt

Я также нашел это:

Тег формы на стороне сервера - это тег, который имеет атрибут runat = "server". Если этот атрибут отсутствует, то это типичный тег HTML-формы. Вывод состоит в том, что вам разрешено использовать несколько тегов формы на странице, если только один имеет атрибут runat = "server". Недостаток формы, которая не имеет этого атрибута, заключается в том, что состояние представления не будет работать  (значения формы исчезают при использовании кнопок браузера назад/вперед). Это небольшая цена для оплаты, если вам действительно нужны несколько форм на странице.

Ответ 6

  • Возьмите мастер-страницу и настройте дизайн.
  • Возьмите одну форму на главной странице.
  • Взять вторую форму в держателе места.
  • Вставить держателя места только для записи тега формы формы (не использовать)
  • Добавить страницу aspx и создать вторую форму, но не писать тег формы только для элемента управления
  • Возьмите пиктограмму кода события с нажатием кнопки

Это правильный способ для двух форм