C# 从jQuery对话框按钮事件中单击ASP.NET按钮

C# 从jQuery对话框按钮事件中单击ASP.NET按钮,c#,asp.net,jquery,jquery-dialog,C#,Asp.net,Jquery,Jquery Dialog,我有以下ASP.NET标记: <div id="myForm" title="My Form" style="display: none"> <span>You can see me!</span> <div style="display: none"> <asp:Button ID="btnSave" runat="server" Text="Button" OnClick="btnS

我有以下ASP.NET标记:

<div id="myForm" title="My Form" style="display: none">
    <span>You can see me!</span>
    <div style="display: none">
        <asp:Button ID="btnSave" runat="server" Text="Button"
            OnClick="btnSave_Click" />
    </div>
</div>

<!-- called by an element click event elsewhere -->
<script type="text/javascript" language="javascript">
    $("#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");
</script>

。。。工作正常,但这是最好的解决方案吗?

您可以使用btnSave.ClientId属性向javascript发送您要查找的控件的ID,然后可以执行类似的操作。如果希望btnSave控件注册为回发控件,则会触发代码隐藏中的“单击”事件

var myControl = document.getElementById('theclientidgoeshere')
myControl.click();
那就行了

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

this.document.form.submit();
但这不会为按钮注册任何事件

这是最好的吗?

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

.NET4.0确实引入了一个可能会有所帮助的选项

.NET 4.0客户端模式属性

在.NET 4.0中,您有一个可选属性,允许您选择如何创建客户端id。您可以使用可预测或静态选项将按钮id硬编码到JavaScript中。

$(“#”)单击();
$("#<%=btnSave.ClientID %>").click();

我刚刚用这个解决方案更新了我的问题:),但对我来说它看起来不太好。这是最好的方法吗?对于.NET3.5和更早版本是的,这是最好的,也是唯一的解决方案。我将使用.NET4.0替代版本更新我的帖子
$("#<%=btnSave.ClientID %>").click();