我有以下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>
我正在尝试使用jQuery.dialog生成的按钮来执行回发来代替ASP.NET按钮。我应该怎么做才能使按钮提交并调用btnSave_Click
方法?
"Save": function () {
$(this).dialog("close");
document.getElementById("<%=btnSave.ClientID %>").click();
}
...有效,但这是最好的解决方案吗?
答案 0 :(得分:5)
$("#<%=btnSave.ClientID %>").click();
答案 1 :(得分:4)
您可以使用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中。