JavaScript:确定导致回发的控件
我目前正在使用ASP.NET3.5开发一个网站。在某个页面上,我不希望某个特定控件会导致回发到服务器。我编写了一个函数,如果满足该条件,则返回false,当onsubmit事件发生时将调用该函数。但我需要确定哪个控件将导致回发,因为只有在特定条件下,该特定控件导致回发时,才应取消回发。这怎么可能呢JavaScript:确定导致回发的控件,javascript,asp.net,onclick,postback,submit,Javascript,Asp.net,Onclick,Postback,Submit,我目前正在使用ASP.NET3.5开发一个网站。在某个页面上,我不希望某个特定控件会导致回发到服务器。我编写了一个函数,如果满足该条件,则返回false,当onsubmit事件发生时将调用该函数。但我需要确定哪个控件将导致回发,因为只有在特定条件下,该特定控件导致回发时,才应取消回发。这怎么可能呢 感谢您的时间。您可以使用ScriptManager.GetCurrent().AsyncPostBackSourceElementID查找导致回发到页面的控件 有关的更多详细信息,但在以下情况下它将起
感谢您的时间。您可以使用
ScriptManager.GetCurrent().AsyncPostBackSourceElementID
查找导致回发到页面的控件
有关的更多详细信息,但在以下情况下它将起作用:
- 一个控件的回发是 在UpdatePanel控件中 ChildrenAsTriggers属性设置为 true(默认值)
- 来自控件的回发,该控件是UpdatePanel控件的触发器
- 从通过调用 RegisterAsyncPostBackControl方法 ScriptManager控件的
ASP.NET
如何识别控件
负责处理回邮?
在中没有引用控件时
请求机构执行
IPostBackEventHandler
接口
page类查找\u事件目标
隐藏字段(如果有)。内容
假定该字段是的ID
导致回发的控件。
如果此控件实现
IPostBackEventHandler
接口
RaisePostbackEvent
方法被调用
这是从这里来的
因此,在客户端\uu EVENTTARGET
就是您所需要的。在服务器端,您可以重写该方法(这是受保护的方法,因此您可以从类继承):
或在不吸入的情况下执行相同的操作:
var controlName = page.Request.Params["__EVENTTARGET"];
Control postbackControl = null;
if (!string.IsnullOrEmpty(controlName))
{
postbackControl = this.Page.FindControl(controlName);
}
编辑:关于作者对我的答案的评论:如果
\uu EVENTTARGET
值是一个空字符串,那么在\uuu doPostBack
函数中设置该值之前,您似乎得到了该值。因此,解决方法可以是重写uu doPostBack
函数或类似方式;您可以在这里找到一个这样做的示例。Hello,查询导致服务器端回发的控件将为时已晚,因为我想阻止回发。因此,我尝试获取隐藏字段uu EVENTTARGET的值,该字段处理Submit上的事件,但其值始终为空字符串。谢谢。你提供的链接帮了我很多忙:)你好,我不使用更新面板。我的情况是,我的页面上有一个下拉列表。每次选择另一个项目时,都会导致回发。如果选择了列表中的第一个值,因为它是一个无效条目(仅供参考),并且选择了一个值,但相关信息已经显示,我希望防止回发。
var controlName = page.Request.Params["__EVENTTARGET"];
Control postbackControl = null;
if (!string.IsnullOrEmpty(controlName))
{
postbackControl = this.Page.FindControl(controlName);
}