HbackField值在回发时丢失

时间:2011-06-14 19:45:16

标签: javascript asp.net ajax hiddenfield

我有一些JavaScript设置HiddenField的值,然后强制回发。我可以跟踪这个JavaScript,它似乎正常工作。但是,当我从页面的Load事件中测试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 个答案:

答案 0 :(得分:5)

如果您从隐藏字段中删除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 :(得分:1)

如果您希望通过UpdatePanel在AJAX回复后期望值,那么您需要将其放在ContentTemplate ...