2016-06-22 76 views
2

我想知道哪個函數會首先執行OnCommand或OnClientClick?哪個函數在asp.net中首先執行?

<asp:LinkButton ID="btnHRApprove" runat="server" Text="Approve" OnCommand="btnApprove_Click" OnClientClick="return ValidatePayrate()" CommandArgument="HR" CssClass="adLink" /> 
+1

這將是'OnClientClick' – Mairaj

+0

您可以隨時通過自行測試(在您的後端代碼中)/調試器(在JavaScript代碼中)。 –

回答

1
OnClientClick 

首先執行,但勢必會只有一個控制器,而

OnCommand 

也在客戶端側執行的,而是調用服務器雙面方法和可以結合到幾個按鈕具有不同編號:s,然後通過一個開關殼體處理,以確定哪個命令是這樣的:

<asp:Button id="btnHRApprove" 
     Text="approve" 
     CommandName="ValidatePayrate" 
     OnCommand="btnApprove_Click" 
     runat="server"/> 

    <asp:Button id="btnSubmit" 
     Text="Submit" 
     CommandName="Submit" 
     OnCommand="btnApprove_Click" 
     runat="server"/> 

然後,在後面的代碼(在本例C#),則可以使用一個SWITC小時的情況下,以檢查其指令下達,而不是它被點擊按鈕:

void btnApprove_Click(Object sender, CommandEventArgs e) 
    { 
    switch(e.CommandName) 
    { 
     case "ValidatePayrate": 
      //Your ValidatePayRate code here 
      break; 
     case "Submit": 
      // Submit code here 
      break; 
     default: 
      // Default 
      break; 
    } 
    } 

如果客戶端JavaScript的關閉,會的OnClientClick不火和按需必火,而不是

1

在Web應用程序中工作時,始終要記住方法和調用是爲客戶端編寫的,始終首先執行。

所以在你的情況下,方法ValidatePayrate()將被觸發,如果它返回false,那麼服務器端函數將不會被執行。

2
OnClientClick="return ValidatePayrate()" 

這將首先執行,是根據它的返回值下一個函數將執行, 如果它返回false,那麼繼續執行,否則

OnCommand="btnApprove_Click" 

將執行停止。因爲它是在客戶端側執行

相關問題