我有一些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>
有没有人有任何想法?
答案 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
...