ASP.NET调用另一个元素&x27;s DoPostBack函数

ASP.NET调用另一个元素&x27;s DoPostBack函数,asp.net,javascript,Asp.net,Javascript,我有一个ASP.NET控件,它在元素上内联呈现了onclick事件处理程序。我想调用该函数并让它引发目标控件的服务器端事件处理程序 <asp:CheckBox ID="Foo" runat="server" AutoPostBack="true" Text="Foo" /> <a href="#" onclick="javascript:setTimeout('__doPostBack(\'Foo\',\'\')', 0)">Te

我有一个ASP.NET控件,它在元素上内联呈现了onclick事件处理程序。我想调用该函数并让它引发目标控件的服务器端事件处理程序

<asp:CheckBox ID="Foo" 
    runat="server" 
    AutoPostBack="true" 
    Text="Foo" />

<a href="#" 
    onclick="javascript:setTimeout('__doPostBack(\'Foo\',\'\')', 0)">Test
</a>

可以这样做吗?

为什么不将标记转换为asp:linkbutton,然后使用一个处理程序处理这两个标记

protected override void OnInit(EventArgs e)
{
    this.Foo.CheckedChanged += new EventHandler(Foo_CheckedChanged);
    this.Bar.Click+= new EventHandler(Foo_CheckedChanged);
}

您的客户端ID复选框现在可能是“Foo”

使用以下命令确保为元素使用正确的ClientID

<a href="#" 
    onclick="javascript:setTimeout('__doPostBack(\'<%= Foo.ClientID %> \',\'\')', 0)">Test
</a>

不要试图手动确定回发时javascript的外观。为任务使用适当的API。。。在本例中,这正是GetPostBackEventReference的用途

myControl.Attributes.Add("onclick", "javascript:" + ClientScript.GetPostBackEventReference(targetControl));

谢谢你的回复。这是一个简化的示例,用于从更大的上下文中说明问题。在JQuery中,我连接了dom元素上的click事件,该元素尝试在onclick事件中为asp.net呈现的复选框提取函数。您的答案中的代码将javascript呈现为与我所了解的内容同义的代码,而不包含settimeout部分。这并不能解决问题。此外,上述代码中几乎没有打字错误;它的“onclick”和GetPostBackEventReference没有仅用于控件的重载。您的控件没有“lick”事件吗?您使用的是哪种过时的浏览器?舔界面显然是继“触摸”热之后的下一步。我想我不明白你到底想在这里做什么。调用复选框事件处理程序中发生的任何代码都是非常简单的。。。为什么必须是复选框事件很重要?为什么不在一个锚点击事件中调用相同的方法呢?我已经考虑过这一点,并将其作为最后的手段。从语义上讲,内容应该是具有相应标签的输入。单击这两个元素的容器的能力是“UI sugar”,并且可能来来往往。我不希望更改内容的结构以允许单击(但将执行需要执行的操作)。javascript是从asp.net生成的html标记复制和粘贴的,客户端id是正确的。
myControl.Attributes.Add("onclick", "javascript:" + ClientScript.GetPostBackEventReference(targetControl));