簡體   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