繁体   English   中英

使用 Javascript 调用 C# 方法

[英]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>

然后同时使用OnClickOnClientClick点击按钮:

<asp:Button 
    ID="ButtonVisible" 
    runat="server" 
    Text="Test Button" 
    OnClientClick="return CallMe();"
    OnClick="Button1_Click" />

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM