asp.net LinkButton OnClick未使用href触发

asp.net LinkButton OnClick未使用href触发,asp.net,onclick,href,linkbutton,Asp.net,Onclick,Href,Linkbutton,我有一个LinkButton,它工作得非常好,但是当我向LinkButton添加一个href时,它会将我重定向到链接,而不会触发OnClick函数 <asp:LinkButton target="_blank" ID="ad_main_form" OnClick="ad_button_Click" runat="server" CssClass="ad_main_panel&q

我有一个LinkButton,它工作得非常好,但是当我向LinkButton添加一个href时,它会将我重定向到链接,而不会触发OnClick函数

<asp:LinkButton target="_blank" ID="ad_main_form"  
    OnClick="ad_button_Click" runat="server"  
    CssClass="ad_main_panel" CausesValidation="False" 
    href="https://stackoverflow.com">
</asp:LinkButton>


如何同时激发OnClick和href?

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

为了避免所有这些麻烦,我应该做的是,在我的点击处理程序中调用
Response.Redirect('url')
,以便它以更干净的方式完成这两项工作

更新
很遗憾,您无法使用
Response.Redirect()
方法在新选项卡中打开url,但您当然可以编写
javascript
代码在新选项卡中打开url。见:

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>");
Response.Write(“window.open”()http://www.mywebsite.com“,”空白“)”;

asp:LinkButton没有href标记

服务器端需要OnClick,客户端需要onclintclick

 <asp:LinkButton ID="ad_main_form"
            runat="server"
            OnClick="ad_button_Click"
            OnClientClick="javascript: window.open('https://stackoverflow.com');">
            Click me
 </asp:LinkButton>
您也可以这样处理它,并为OnClientClick()提供一个自定义JavaScript函数。请参阅导航(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>

函数导航(url){
javascript:window.open(url);
}
点击我

代码已经过测试,运行良好

你可以离开页面,也可以不离开,我认为你不能两者兼而有之。这样做:删除href,在浏览器中加载页面,然后>查看源代码以查看linkbutton发生了什么。然后添加一个PostBackUrl并重新加载浏览器和>查看源代码。@Jamal这没有任何意义,我想让用户打开一个带有href的链接。并跟踪用户在后端单击该链接(锚定标记)的次数。Response.redirect()可以工作,但我不想从服务器端执行此操作,我想在客户端打开链接并跟踪服务器中的点击side@Drust-Taib,基于您的澄清,请参见下面我的回答;由于没有href,您需要使用OnClientClick(),如下所示。这对你有用吗?@DrustTaib我想你的评论是空白的。@Jamshid Kamaran很抱歉,这是个意外。我有两个顾虑1-response.redirect()也在做同样的事情,但是response.redirect()来自服务器端。我想从客户端做这件事。2-我想在一个新的浏览器选项卡中打开链接,我们能用response.redirect()打开吗?@DrustTaib请参考我答案中的更新。@Jamshid Kamaran谢谢你的回答。我知道它是有效的,但我真正想要的是在客户端打开链接,而不是在服务器端。@DrustTaib
window.open
是客户端方法,您只需使用服务器将javascript注入页面,这是因为服务器正在被触发,所以通过服务器打开链接就可以了。
<%@ 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>