单击jQuery对话框按钮事件中的ASP.NET按钮

我有以下ASP.NET标记:

You can see me!
$("#myForm").dialog({ modal: true, width: 500, height: 200, resizable: false, buttons: { "Cancel": function () { $(this).dialog("close"); }, "Save": function () { $(this).dialog("close"); // I want to call btnSave_Click (by DOM-clicking the button?) } } }); $("#myForm").parent().appendTo("form:first");

我正在尝试使用jQuery.dialog生成的按钮来执行回发来代替ASP.NET按钮。 我该怎么做才能使按钮提交并调用btnSave_Click方法?


编辑

 "Save": function () { $(this).dialog("close"); document.getElementById("").click(); } 

……有效,但这是最好的解决方案吗?

您可以使用btnSave.ClientId属性向javascript发出您要查找的控件的ID,然后您可以执行类似的操作。 这是您希望btnSave控件注册为回发控件,在后面的代码中触发“Click”事件。

 var myControl = document.getElementById('theclientidgoeshere') myControl.click(); 

那就行了!

如果你想做一个简单的回发,你可以做

 this.document.form.submit(); 

但是这不会为按钮注册任何事件。

这是最好的吗?

对于.NET 3.5及更早版本,它是获取客户端ID的唯一“真正”安全方式。 使用jQuery,您可以在_btnSave上进行部分id匹配,但我发现这对于将来的修改来说风险太大。

.NET 4.0确实引入了可能有用的选项。

.NET 4.0 ClientIDMode属性

在.NET 4.0中,您有一个可选的ClientIDMode属性,允许您选择如何创建客户端ID。 您可以使用Predictable或Static选项,允许您将按钮的ID硬编码到JavaScript中。

 $("#<%=btnSave.ClientID %>").click();