回发时隐藏字段值丢失
我有一些 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>
有人有什么想法吗?
I have some JavaScript that sets the value of a HiddenField
and then forces a postback. I can trace through this JavaScript and it appears to work correctly. However, when I test the value of the HiddenField
from the page's Load event, it is no longer set.
Searching the web, I see a lot of posts about losing HiddenField
values but none of them seemed to be doing the same thing that I am.
Here's my JavaScript function (modified):
function EditItemItem(itemId) {
document.getElementById('<%= EditItemId.ClientID %>').value = itemId;
__doPostBack('<%= EditItemUpdatePanel.ClientID %>', '');
}
And here's part of my markup (modified):
<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>
Does anyone have any ideas?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
如果从隐藏字段中删除
runat=server
,然后从表单参数Request.Form["EditItemId"]
访问它,会更容易。然后每次都有效。你的代码将变成:
It's easier if you remove
runat=server
from the hidden field and then access it from the Form paramatersRequest.Form["EditItemId"]
. Then it works every time.Your code will become:
如果您希望通过
UpdatePanel
在 AJAX 回发时获得该值,那么您需要将其放入ContentTemplate
中...If you're expecting the value upon an AJAX post-back via the
UpdatePanel
then you need to put it inside theContentTemplate
...