[英]Calling C# Method Using Javascript
我正在尝试使用 Javascript 在我的代码中访问名为“Button1_Click”的方法,我认为下面的代码有问题,因为目前我必须单击两次才能触发该方法,单击一次不会触发方法。
我的测试代码:
// Javascript
<script type="text/javascript">
function CallMe() { document.getElementById('<%= ButtonHidden.ClientID %>').click(); }
</script>
// Markup
<asp:Button ID="ButtonVisible" runat="server" Text="Test Button"
OnClientClick="CallMe();"/>
<asp:Button ID="Button1" runat="server" style="display:none;" Text="Click"
OnClick="Button1_Click"/>
// Code Behind Method
protected void Button1_Click(object sender, EventArgs e)
{
Response.Redirect("http://google.com");
}
我错过了什么吗?
您可以使用按钮的OnClientClick
属性:
<asp:button id="Button1"
text="Test Button"
onclientclick="CallMe()"
runat="server" onclick="Button1_Click" />
然后你不需要另一个(隐藏的)按钮。
然后,您的 CallMe() 方法应返回 true(如果一切正常)或 false(取消回发)。
而不是使用 javascript 为什么不简单地为两个按钮分配相同的服务器点击处理程序:
<asp:Button
ID="ButtonVisible"
runat="server"
Text="Test Button"
OnClick="Button1_Click" />
<asp:Button
ID="Button1"
runat="server"
style="display:none;"
Text="Click"
OnClick="Button1_Click" />
更新:
更好的解决方案是让您的 javascript function 返回 boolean 值,具体取决于是否满足将执行服务器处理程序的某些条件:
<script type="text/javascript">
function CallMe() {
if (some condition) {
return true; // allow the server to be called
}
return false;
}
</script>
然后同时使用OnClick
和OnClientClick
点击按钮:
<asp:Button
ID="ButtonVisible"
runat="server"
Text="Test Button"
OnClientClick="return CallMe();"
OnClick="Button1_Click" />
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.