Значение HiddenField потеряно при обратной передаче - PullRequest
1 голос
/ 14 июня 2011

У меня есть некоторый JavaScript, который устанавливает значение HiddenField и затем вызывает обратную передачу.Я могу проследить через этот JavaScript, и он, кажется, работает правильно.Однако, когда я проверяю значение HiddenField из события загрузки страницы, оно больше не устанавливается.

При поиске в Интернете я вижу много сообщений о потере значений HiddenField, но ни одно из нихказалось, делает то же самое, что и я.

Вот моя функция JavaScript (изменена):

function EditItemItem(itemId) {
    document.getElementById('<%= EditItemId.ClientID %>').value = itemId;
    __doPostBack('<%= EditItemUpdatePanel.ClientID %>', '');
}

А вот часть моей разметки (изменена):

<div id="EditItemBox" runat="server">
    <asp:HiddenField runat="server" id="EditItemId" />
    <asp:UpdatePanel ID="EditItemUpdatePanel" runat="server"
        UpdateMode="Conditional">
        <ContentTemplate>
        <asp:Panel ID="EditItemPanel" runat="server"
            CssClass="ModalDialog" style="display:none;">
            <div>Edit an Item</div>
            <!-- ... -->
        </asp:Panel>
    </asp:UpdatePanel>
</div>

У кого-нибудь есть идеи?

Ответы [ 2 ]

5 голосов
/ 15 июня 2011

Проще, если вы удалите runat=server из скрытого поля, а затем получите доступ к нему из параметров формы Request.Form["EditItemId"].Тогда это работает каждый раз.

Ваш код станет:

function EditItemItem(itemId) {
    document.getElementById('EditItemId').value = itemId;
    __doPostBack('<%= EditItemUpdatePanel.ClientID %>', '');
}

<div id="EditItemBox" runat="server">
    <input type="hidden" id="EditItemId" name="EditItemId" value="" />
    <asp:UpdatePanel ID="EditItemUpdatePanel" runat="server"
        UpdateMode="Conditional">
        <ContentTemplate>
        <asp:Panel ID="EditItemPanel" runat="server"
            CssClass="ModalDialog" style="display:none;">
            <div>Edit an Item</div>
            <!-- ... -->
        </asp:Panel>
    </asp:UpdatePanel>
</div>
1 голос
/ 14 июня 2011

Если вы ожидаете значение после постбэка AJAX через UpdatePanel, вам нужно поместить его в ContentTemplate ...

...