Отправка одной панели обновлений очищает ввод флажка в другой панели обновлений?

#asp.net #checkbox #updatepanel

#asp.net #флажок #updatepanel

Вопрос:

У меня есть два флажка на панели обновления. Один из них — это ASP.NET Элемент управления флажком, другой — это просто HTML <input> -элемент. У меня есть кнопка на другой панели обновления.

Итак, вот соответствующая часть страницы:

 <asp:UpdatePanel runat="server" ID="UpdatePanel1">
    <ContentTemplate>
        <input type="checkbox" id="check1" name="check1" />HTML Input<br />
        <asp:CheckBox runat="server" ID="check2" Text="ASP CheckBox"></asp:CheckBox><br />
    </ContentTemplate>
</asp:UpdatePanel>
<asp:UpdatePanel runat="server" ID="UpdatePanel2">
    <ContentTemplate>
    <asp:Button runat="server" ID="Submit" Text="Submit" OnClick="Submit_Click" />
    </ContentTemplate>
</asp:UpdatePanel>
 

Я устанавливаю оба флажка, затем нажимаю на кнопку. Что я вижу, так это то, что галочка исчезает с той, которая является просто HTML, но галочка все еще присутствует для элемента управления CheckBox.

Почему? Я бы подумал, что ничего в первой панели обновления не изменится, потому что я делаю частичную обратную передачу второй панели обновления.

Если я уберу два флажка с панели обновления, то оба сохранят свои флажки (как я и ожидал).

Комментарии:

1. Ответ Митчелла Селлерса объясняет это. Я добавлю, что я не должен был удивляться тому, что элемент управления флажком ведет себя иначе, чем элемент ввода (хотя они оба отображаются как элементы ввода). Страница будет начинаться со своих значений по умолчанию каждый раз в течение жизненного цикла страницы, но флажок восстановит опубликованное значение в своем методе LoadPostData.

Ответ №1:

Я предполагаю, что ваши панели обновлений должны быть настроены так, чтобы обновлялась ТОЛЬКО фактически используемая панель обновлений. При обновлении UpdatePanel2 обновляются обе панели. Я считаю, что до тех пор, пока вы устанавливаете свойство UpdateMode=»Conditional» для UpdatePanel1, вы получите желаемый эффект.

Вы можете увидеть эту документацию MSDN в свойстве UpdateMode.

Комментарии:

1. Это объясняет это, спасибо. Наверное, я думал, что поведение, которое вы получаете от UpdateMode=»Conditional», было по умолчанию, но это не так.