2013-04-02 1 views
1

что философия этого ASP.NET не позволяет сделать более одной формы с тегом runat=server ...ASP.NET не обеспечивает более одного сервера на стороне формы

+0

Duplicate of [Почему у вас не может быть страницы с несколькими тегами формы на стороне сервера?] (Http://stackoverflow.com/questions/4360270/why-you-cant-have-a-page- с-множественных серверный форм-тегов). Нашел это после ответа. –

ответ

2

Web Forms построены — для лучшего или хуже — вокруг концепций, предназначенных для абстрагирования базовой платформы. Примерами такого подхода являются серверные элементы управления, события сервера, ViewState и UpdatePanels.

Множество форм не являются невозможными, но для начинающего разработчика, который добавляет серверные элементы управления на свою страницу и будет неинтуитивно, он хочет, чтобы они «просто работали». Для опытного разработчика было бы неплохо, но в нем будет представлен новый набор предостережений (и в Web Forms есть много нюансов и оговорок).

Например, я добавил GridView, чтобы сформировать A, и DropDownList, чтобы сформировать B. Сбрасывание запускает обратную передачу, но только данные в форме B отправляются на сервер (это то, как работают формы, только один раз публикуется за раз).

Однако в GridView отсутствует вся его ViewState, которая содержалась в форме A. Теперь страница полностью сломана.

Специальные значения ViewState еще более сложны. Разработчик может поместить все, что захочет, в ViewState в качестве пары имя/значение. Как сервер должен решить, какая форма получает ViewState? если он идет в все формы, это страница раздувается.

Резюме

  • Это не технически невозможно, но проблемы потенциально перевешивают выгоды.
  • Есть средства, с помощью которых вы можете добавить вторую страницу <form> на страницу ASPX (хотя она может не работать на сервере).
  • Нет абсолютно ничего плохого в отношении нескольких форм на странице. Это одно из многих преимуществ работы с платформой, а не борьба с ней, например, попытки ASP.Net MVC.