asp.net LinkBut​​ton OnClick没有用href触发

问题描述

我有一个LinkBut​​ton,它确实运行良好,但是当我在LinkBut​​ton中添加href时,它会将我重定向到该链接,而无需触发OnClick函数

data:='2020-07-08T01:11:02-0700'
startDate,err := time.Parse(time.RFC3339,data.(string))
if err != nil {
    fmt.Println("err is",err)
    return
}

如何同时触发OnClick和href?

解决方法

LinkButton具有名称为PostbackUrl的属性,而不是使用href,请使用此属性。

要避免所有麻烦,请在我的点击处理程序中调用Response.Redirect('url'),以便它以更简洁的方式完成这两项工作。

更新
不幸的是,您无法使用Response.Redirect()方法在新标签页中打开,但是您可以编写javascript代码以在新标签页中打开网址。参见:

Page.ClientScript.RegisterClientScriptBlock(this.GetType(),"openurl","window.open('http://www.mywebsite.com','_blank');",true);

或者,您可以像这样简单地做到这一点:

Response.Write("<script>window.open('http://www.mywebsite.com','_blank')</script>");
,

asp:LinkBut​​ton没有href标签。

您需要服务器端使用OnClick,客户端需要OnClientClick

 <asp:LinkButton ID="ad_main_form"
            runat="server"
            OnClick="ad_button_Click"
            OnClientClick="javascript: window.open('https://stackoverflow.com');">
            Click me
 </asp:LinkButton>

C#后面的代码:

 protected void ad_button_Click(object sender,EventArgs e)
    {
        // your code
    }
       

您也可以通过这种方式进行处理,并向OnClientClick()提供自定义JavaScript函数。请参阅Navigate(url)函数。后面的代码保持不变。

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="WebForm1.aspx.cs" Inherits="YourProject.WebForm1" %>

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
</head>
<script type="text/javascript">
    function Navigate(url) {         
        javascript: window.open(url);
    }
</script>  

<body>
  <form id="form1" runat="server">
    <div>
        <asp:LinkButton ID="ad_main_form"
            runat="server"
            OnClick="ad_button_Click"
            OnClientClick="Navigate('https://stackoverflow.com')" 
            CausesValidation="False">
            Click me
        </asp:LinkButton>
    </div>
  </form>    
</body>

该代码已经过测试,可以正常工作!