#asp.net #onclick #href #linkbutton
#asp.net #onclick #href #linkbutton
Вопрос:
У меня есть LinkButton, он работает действительно хорошо, но когда я добавляю href в LinkButton, он перенаправляет меня на ссылку без запуска функции 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 вместе?
Комментарии:
1. Вы можете покинуть страницу или нет, я не думаю, что вы можете сделать и то, и другое.
2. Сделайте это: удалите href, загрузите страницу в браузере и> просмотреть исходный код, чтобы увидеть, что происходит с linkbutton. Затем добавьте PostBackUrl и перезагрузите браузер и> снова просмотрите исходный код.
3. @Jamal в этом нет никакого смысла, я хочу позволить пользователю открывать ссылку с помощью href. И отслеживайте, сколько раз пользователь нажимает на эту ссылку (тег привязки) в серверной части. Response.redirect() работает, но я не хочу делать это со стороны сервера, я хочу открыть ссылку на стороне клиента и отслеживать клики на стороне сервера
4. @Drust-Taib, основываясь на ваших разъяснениях, смотрите Мой ответ ниже; Поскольку нет href, вам нужно использовать OnClientClick(), как показано ниже. Работает ли это для вас?
Ответ №1:
LinkButton
имеет свойство с именем, PostbackUrl
вместо этого используя href
, пожалуйста, используйте это свойство.
Чтобы избежать всех этих хлопот, что я бы сделал, это вызвал Response.Redirect('url')
внутри моего обработчика щелчков, чтобы он выполнял обе работы более чистым способом.
Обновить
К сожалению, вы не можете открыть новую вкладку с помощью Response.Redirect()
метода, но вы, безусловно, можете написать 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>");
Комментарии:
1. @DrustTaib Я думаю, что вы разместили пустой комментарий.
2. @Джамшид Камаран извините за комментарий, это была случайность. У меня есть две проблемы 1- response.redirect() делает то же самое, но response.redirect() находится на стороне сервера. Я хочу сделать это со стороны клиента. 2- Я хочу открыть ссылку на новой вкладке браузера, можем ли мы сделать это с помощью response.redirect()?
3. @DrustTaib Пожалуйста, обратитесь к обновлению в моем ответе.
4. @Джамшид Камаран Спасибо вам за ваш ответ. Я знаю, что это работает, но то, что я на самом деле ищу, — это открыть ссылку на стороне клиента, а не на стороне сервера.
5. @DrustTaib
window.open
— это метод на стороне клиента, вы просто вводите javascript на свою страницу с помощью сервера, и это потому, что сервер запускается в любом случае, поэтому все в порядке, если вы открываете ссылку через сервер.
Ответ №2:
asp: LinkButton не имеет тега 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
}
Вы также можете обработать это таким образом и предоставить пользовательскую функцию JavaScript для OnClientClick(). Смотрите функцию навигации (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>
Код был протестирован и работает нормально!