asp.net LinkButton OnClick未使用href触发
我有一个LinkButton,它工作得非常好,但是当我向LinkButton添加一个href时,它会将我重定向到链接,而不会触发OnClick函数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
<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>