Javascript 回发时丢失HiddenField值

Javascript 回发时丢失HiddenField值,javascript,asp.net,ajax,hiddenfield,Javascript,Asp.net,Ajax,Hiddenfield,我有一些JavaScript设置HiddenField的值,然后强制回发。我可以跟踪这个JavaScript,它似乎工作正常。但是,当我从页面的加载事件测试HiddenField的值时,它不再被设置 在网上搜索时,我看到了很多关于丢失HiddenField值的帖子,但没有一篇帖子像我一样 下面是我的JavaScript函数(已修改): 函数EditItemItem(itemId){ document.getElementById(“”).value=itemId; __doPostBack(''

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

在网上搜索时,我看到了很多关于丢失
HiddenField
值的帖子,但没有一篇帖子像我一样

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

函数EditItemItem(itemId){
document.getElementById(“”).value=itemId;
__doPostBack('','');
}
下面是我的部分标记(已修改):


编辑项目

有人有什么想法吗?

如果您希望通过
UpdatePanel
返回AJAX帖子的值,那么您需要将其放入
ContentTemplate

如果您希望通过
UpdatePanel
返回AJAX帖子的值,那么您需要将其放入
ContentTemplate
..

如果从隐藏字段中删除
runat=server
,然后从表单paramaters
请求中访问它,会更容易些。然后它每次都能工作

您的代码将成为:

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>
函数EditItemItem(itemId){
document.getElementById('EditItemId')。value=itemId;
__doPostBack('','');
}
编辑项目

如果从隐藏字段中删除
runat=server
,然后从表单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>
函数EditItemItem(itemId){
document.getElementById('EditItemId')。value=itemId;
__doPostBack('','');
}
编辑项目

我假设正在调用Page_Load以响应AJAX回发。我尝试直接在ContentTemplate中移动HiddenField控件,甚至在EditItemPanel中再次尝试,但我得到了相同的结果。我假设正在调用Page_Load以响应AJAX回发。我尝试直接在ContentTemplate中移动HiddenField控件,甚至在EditItemPanel中再次尝试,但我得到了相同的结果。除了当HiddenField控件没有runat=“server”属性时收到的警告外,即使这样对我也不起作用。在这一点上,我不知道问题是否与AJAX有关,或者是什么<代码>请求。表单['EditItemId]
总是返回空值。对此表示抱歉。你不应该使用@marto:I,因为它仍然是空的,所以我必须有其他事情发生。我假设当它导致页面的加载事件运行时,我得到的是一个AJAX回发。不知何故,数据无法返回服务器。非常奇怪!您在fiddler中查看过隐藏字段的值是否发送回服务器吗?我没有使用fiddler,但可以看到Request.Form.AllKeys集合不包含隐藏字段。我甚至在标记中设置了一个默认值,但它仍然没有显示。一定与AJAX回调有关吗?好吧,除了HiddenField控件没有runat=“server”属性时得到的警告之外,即使这样对我也不起作用。在这一点上,我不知道问题是否与AJAX有关,或者是什么<代码>请求。表单['EditItemId]总是返回空值。对此表示抱歉。你不应该使用@marto:I,因为它仍然是空的,所以我必须有其他事情发生。我假设当它导致页面的加载事件运行时,我得到的是一个AJAX回发。不知何故,数据无法返回服务器。非常奇怪!您在fiddler中查看过隐藏字段的值是否发送回服务器吗?我没有使用fiddler,但可以看到Request.Form.AllKeys集合不包含隐藏字段。我甚至在标记中设置了一个默认值,但它仍然没有显示。必须是一个AJAX回调吗?Jonathan。你最终成功了吗?@marto:没有。它似乎与动态加载的用户控件有关。实际上,我能够更好地定义问题,甚至在一个小测试项目中重现问题。我发了一个新问题,乔纳森。你最终成功了吗?@marto:没有。它似乎与动态加载的用户控件有关。实际上,我能够更好地定义问题,甚至在一个小测试项目中重现问题。我发布了一个新问题。
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>