У меня есть довольно стандартная главная страница с ContentPlaceHolder..net форма внутри пользовательского управления теряет значения после обратной передачи
<section class="content" style="height:100%;">
<form id="contentForm" runat="server">
<div class="container" style="background:#fff; border:30px solid #fff; height:80%;">
<div class="row" style="height:100%;">
<section class="span8" role="main" style="height:100%;">
<asp:ContentPlaceHolder Id="MainContent" runat="server" />
</section>
</div>
</div>
</form>
</section>
Внутри этого ContentPlaceHolder У меня есть usercontrol, который содержит выпадающий список и текстовое поле.
С тегом from на главной странице, если я изменяю раскрывающийся список, страница отправляется так, как ожидалось, и поля формы сохраняют свои выбранные значения. Теперь мне нужно удалить тег из главной страницы, поскольку это приводит к сбою некоторых других страниц. Я хочу поместить тег формы внутри usercontrol.
<form id="trackingForm" runat="server">
<div id="employee" class="statsTable"><strong>Employee:</strong>
<asp:DropDownList ID="selectPerson_DDL" runat="server" Width="200" AutoPostBack="true" onselectedindexchanged="selectPerson_DDL_SelectedIndexChanged"></asp:DropDownList>
</div>
</form>
Страница по-прежнему отправляется как раньше, но теперь я теряю выбранное значение в раскрывающемся списке. Я пробовал различные параметры, такие как проверка на page.IsPostBack и т. Д. Я вижу, что ViewState существует после отправки формы.
Почему поведение управления изменяется только потому, что тег формы теперь находится в usercontrol?
вы можете использовать панели обновления, чтобы избежать postbacks –
Я пошел с полной обратной почтой, так как на странице есть несколько элементов управления, которые заполняются на основе этого раскрывающегося списка. Казалось легче в то время. Теперь я могу пожалеть об этом. –
ASP.NET WebForms поддерживает только один элемент FORM с runat = "server" на страницу. Есть ли причина, почему вы должны использовать FORM, не могли бы вы заменить ее на DIV? – sh1rts