gpt4 book ai didi

c# - 清除 __eventArgument

转载 作者:行者123 更新时间:2023-11-29 09:55:44 26 4
gpt4 key购买 nike

我有一个带有 <asp:UpdatePanel> 的表单和 2 <asp:button>控件来保存和重置表单。我正在触发 <asp:UpdatePanel>使用 javascript __doPostBack()函数并在其中传递一个值 __EVENTARGUMENT如果面板应该重置。

我的代码隐藏通过以下方式检查 PreRender 上的值

Request.Params.Get("__EVENTARGUMENT")

确定是否使用原始数据重置表单。

如果面板之前已重置,则 __EVENTARGUMENT按下保存按钮时似乎会逗留,因此在回发时再次重置我的表单。

我试图清除 __EVENTARGUMENTPage_Load使用:

Request.Params.Clear();

Request.Params.Set("__EVENTARGUMENT", "");

但集合是只读的。我在另一篇文章中发现,使用 javascript:

window.document.getElementById('__EVENTARGUMENT').value = '';

但这似乎也不起作用。有什么想法吗?

最佳答案

刚想通了。

解决方案

__EVENTARGUMENT可以通过以下方式简单地清除:

theForm.__EVENTARGUMENT.value = '';

如果有必要在每次 <asp:UpdatePanel> 时执行此操作加载,然后将以下内容放入您的 UpdatePanel:

<script type="text/javascript">
Sys.Application.add_load(function () {
theForm.__EVENTARGUMENT.value = '';
});
</script>


原因:

大多数 .Net 控件使用 javascript __doPostBack函数来处理回传,因此在生成页面时会自动添加以下代码:

<script type="text/javascript">
//<![CDATA[
var theForm = document.forms['form'];
if (!theForm) {
theForm = document.form;
}
function __doPostBack(eventTarget, eventArgument) {
if (!theForm.onsubmit || (theForm.onsubmit() != false)) {
theForm.__EVENTTARGET.value = eventTarget;
theForm.__EVENTARGUMENT.value = eventArgument;
theForm.submit();
}
}
//]]>
</script>

这是为 __EVENTARGUMENT 设置值的位置,因此从代码隐藏中引用了什么。

关于c# - 清除 __eventArgument,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11985250/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com