简体   繁体   English

使用 Javascript 调用 C# 方法

[英]Calling C# Method Using Javascript

I am trying to access a method in my code behind called "Button1_Click" using Javascript, I think there is something wrong in my code below because currently I have to click twice in order for the method to trigger, one click doesn't trigger the method.我正在尝试使用 Javascript 在我的代码中访问名为“Button1_Click”的方法,我认为下面的代码有问题,因为目前我必须单击两次才能触发该方法,单击一次不会触发方法。

My Test Code:我的测试代码:

// 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");
}

Am I missing something?我错过了什么吗?

You could use the OnClientClick property of the Button:您可以使用按钮的OnClientClick属性:

<asp:button id="Button1"
   text="Test Button"
   onclientclick="CallMe()"
   runat="server" onclick="Button1_Click" />

Then you don't need another (hidden) button.然后你不需要另一个(隐藏的)按钮。

Your CallMe() method should then return either true (if everything is OK) or false (to cancel the postback).然后,您的 CallMe() 方法应返回 true(如果一切正常)或 false(取消回发)。

Instead of using javascript why not simply assign the same server click handler for both buttons:而不是使用 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" />

UPDATE:更新:

A better solution would be to have your javascript function return a boolean value depending on whether some conditions are met which will execute the server handler:更好的解决方案是让您的 javascript function 返回 boolean 值,具体取决于是否满足将执行服务器处理程序的某些条件:

<script type="text/javascript">
    function CallMe() {         
        if (some condition) {
            return true; // allow the server to be called
        }
        return false;
    }
</script>

and then use both OnClick and OnClientClick on the button:然后同时使用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