JavaScript:确定导致回发的控件

JavaScript:确定导致回发的控件,javascript,asp.net,onclick,postback,submit,Javascript,Asp.net,Onclick,Postback,Submit,我目前正在使用ASP.NET3.5开发一个网站。在某个页面上,我不希望某个特定控件会导致回发到服务器。我编写了一个函数,如果满足该条件,则返回false,当onsubmit事件发生时将调用该函数。但我需要确定哪个控件将导致回发,因为只有在特定条件下,该特定控件导致回发时,才应取消回发。这怎么可能呢 感谢您的时间。您可以使用ScriptManager.GetCurrent().AsyncPostBackSourceElementID查找导致回发到页面的控件 有关的更多详细信息,但在以下情况下它将起

我目前正在使用ASP.NET3.5开发一个网站。在某个页面上,我不希望某个特定控件会导致回发到服务器。我编写了一个函数,如果满足该条件,则返回false,当onsubmit事件发生时将调用该函数。但我需要确定哪个控件将导致回发,因为只有在特定条件下,该特定控件导致回发时,才应取消回发。这怎么可能呢


感谢您的时间。

您可以使用
ScriptManager.GetCurrent().AsyncPostBackSourceElementID
查找导致回发到页面的控件

有关的更多详细信息,但在以下情况下它将起作用:

  • 一个控件的回发是 在UpdatePanel控件中 ChildrenAsTriggers属性设置为 true(默认值)

  • 来自控件的回发,该控件是UpdatePanel控件的触发器

  • 从通过调用 RegisterAsyncPostBackControl方法 ScriptManager控件的

我不知道您是否正在使用UpdatePanels,但这似乎是我能想到的唯一一种情况,您需要知道哪个控件导致回发。

请参阅:

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);
}