哪个函数将首先在asp.net中执行?

时间:2016-06-22 06:30:12

标签: javascript asp.net

我想知道哪个函数首先执行OnCommand或OnClientClick?

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

3 个答案:

答案 0 :(得分:2)

 OnClientClick="return ValidatePayrate()" 

这将首先执行,根据其返回值,下一个函数将执行, 如果它返回false则进一步执行否则

OnCommand="btnApprove_Click"

将执行。

答案 1 :(得分:1)

在Web应用程序中工作时,始终要记住为客户端编写的方法和调用总是先执行。

因此,在您的情况下,方法 ValidatePayrate()将首先被触发,如果它返回false,则服务器端函数将不会被执行。

答案 2 :(得分:1)

OnClientClick

首先执行,因为它在客户端执行,但只绑定到一个控制器,而

OnCommand

也在客户端执行但是调用服务器端方法并且可以绑定到具有不同Id:s的多个按钮,然后通过switch case处理以确定命令是什么样的:

  <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#),您可以使用switch case来检查给出的命令而不是单击了哪个按钮:

  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将不会触发,而OnCommand将触发