Можем ли мы использовать несколько форм на веб-странице? - PullRequest
29 голосов
/ 25 сентября 2011

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

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

Plus

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

Ответы [ 6 ]

24 голосов
/ 25 сентября 2011

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

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

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

3 голосов
/ 25 сентября 2011

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

2 голосов
/ 25 сентября 2011

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

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

0 голосов
/ 13 июня 2013
  1. Возьмите главную страницу и настройку дизайна.
  2. Возьмите одну форму на главной странице.
  3. Вторая форма содержит заполнитель.
  4. Содержит заполнительтолько для тега формы записи (не используется)
  5. Добавить страницу aspx и оформить вторую форму, но не тег записи формы только для элемента управления, поставленного
  6. Взять нажатие кнопки, событие, код записи огня,

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

0 голосов
/ 25 сентября 2011

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

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

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

0 голосов
/ 25 сентября 2011

Да, это можно сделать - создав пользовательский объект HtmlForm и переключая формы по мере необходимости. Я только что ответил на аналогичный вопрос здесь (с кодом):

Руины формы Paypal Мой макет веб-форм ASP.NET -> Как решить?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...