1

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

在网上搜索,我看到很多关于失去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>

有没有人有任何想法?

4

2 回答 2

5

如果您runat=server从隐藏字段中删除然后从 Form paramaters 访问它会更容易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>
于 2011-06-14T20:12:13.717 回答
1

如果您期望通过 AJAX 回发的值,UpdatePanel那么您需要将其放入ContentTemplate...

于 2011-06-14T19:48:52.500 回答