HbackField值在回发时丢失

Jon*_*ood 1 javascript asp.net ajax hiddenfield

我有一些JavaScript设置a的值,HiddenField然后强制回发.我可以跟踪这个JavaScript,它似乎正常工作.但是,当我测试HiddenField页面的Load事件的值时,不再设置它.

在网上搜索,我看到很多关于失去HiddenField价值观的帖子,但是他们似乎都没有像我那样做同样的事情.

这是我的JavaScript函数(已修改):

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

这是我的标记(修改)的一部分:

<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>
Run Code Online (Sandbox Code Playgroud)

有没有人有任何想法?

mar*_*rto 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>
Run Code Online (Sandbox Code Playgroud)