что философия этого ASP.NET не позволяет сделать более одной формы с тегом runat=server
...ASP.NET не обеспечивает более одного сервера на стороне формы
ответ
Web Forms построены — для лучшего или хуже — вокруг концепций, предназначенных для абстрагирования базовой платформы. Примерами такого подхода являются серверные элементы управления, события сервера, ViewState и UpdatePanels.
Множество форм не являются невозможными, но для начинающего разработчика, который добавляет серверные элементы управления на свою страницу и будет неинтуитивно, он хочет, чтобы они «просто работали». Для опытного разработчика было бы неплохо, но в нем будет представлен новый набор предостережений (и в Web Forms есть много нюансов и оговорок).
Например, я добавил GridView
, чтобы сформировать A, и DropDownList
, чтобы сформировать B. Сбрасывание запускает обратную передачу, но только данные в форме B отправляются на сервер (это то, как работают формы, только один раз публикуется за раз).
Однако в GridView отсутствует вся его ViewState, которая содержалась в форме A. Теперь страница полностью сломана.
Специальные значения ViewState еще более сложны. Разработчик может поместить все, что захочет, в ViewState в качестве пары имя/значение. Как сервер должен решить, какая форма получает ViewState? если он идет в все формы, это страница раздувается.
Резюме
- Это не технически невозможно, но проблемы потенциально перевешивают выгоды.
- Есть средства, с помощью которых вы можете добавить вторую страницу
<form>
на страницу ASPX (хотя она может не работать на сервере). - Нет абсолютно ничего плохого в отношении нескольких форм на странице. Это одно из многих преимуществ работы с платформой, а не борьба с ней, например, попытки ASP.Net MVC.
Duplicate of [Почему у вас не может быть страницы с несколькими тегами формы на стороне сервера?] (Http://stackoverflow.com/questions/4360270/why-you-cant-have-a-page- с-множественных серверный форм-тегов). Нашел это после ответа. –