Отключите обратную отправку в <ASP:LinkButton>
-
05-07-2019 - |
Вопрос
У меня есть элемент управления ASP.NET linkbutton в моей форме.Я хотел бы использовать его для javascript на стороне клиента и запретить его отправку обратно на сервер.(Я бы хотел использовать элемент управления linkbutton, чтобы я мог скинуть его и отключить в некоторых случаях, поэтому прямой тег не является предпочтительным).
Как мне предотвратить его отправку обратно на сервер?
Решение
ASPX-код:
<asp:LinkButton ID="someID" runat="server" Text="clicky"></asp:LinkButton>
Код позади:
public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
someID.Attributes.Add("onClick", "return false;");
}
}
Что отображает как HTML?
<a onclick="return false;" id="someID" href="javascript:__doPostBack('someID','')">clicky</a>
В этом случае происходит проверка того, что функциональность onclick становится вашим средством проверки. Если оно ложно, то "href" ссылка не выполнена; однако, если это правда, href будет выполнен. Это исключает ваш пост обратно.
Другие советы
Это может звучать как бесполезный ответ ... Но почему вы используете LinkButton для чего-то чисто клиентского? Используйте стандартный тег привязки HTML и установите его действие onclick
для вашего Javascript.
Если вам нужен сервер для генерации текста этой ссылки, используйте asp: Label
в качестве содержимого между начальным и конечным тегами привязки.
Если вам нужно динамически изменить поведение сценария на основе серверного кода, рассмотрите asp: Literal
в качестве метода.
Но если вы не выполняете действия на стороне сервера из события Click LinkButton, похоже, здесь нет особого смысла использовать его здесь.
Ты тоже можешь это сделать
...LinkButton ID="BtnForgotPassword" runat="server" OnClientClick="ChangeText('1');return false"...
И это остановит обратную связь кнопки ссылки
Просто установите href = " # "
<asp:LinkButton ID="myLink" runat="server" href="#">Click Me</asp:LinkButton>
Я думаю, вам следует исследовать использование элемента управления HyperLink. Это серверный элемент управления (так что вы можете манипулировать видимостью и тому подобным из кода), но он пропускает обычный якорный тег и не вызывает обратную передачу.
В C # вы бы сделали что-то вроде этого:
MyButton.Attributes.Add("onclick", "put your javascript here including... return false;");
Только что пройдя через это несколько минут, правильный способ сделать это - использовать
<Ол> Return False ()
как следующий пример строки кода:
<asp:LinkButton ID="lbtnNext" runat="server" OnClientClick="findAllOccurences(); return false();" Visible="false"/>
Просто скопировал эту строку из моего рабочего кода.
Вместо реализации атрибута:
public partial class _Default : System.Web.UI.Page{
protected void Page_Load(object sender, EventArgs e)
{
someID.Attributes.Add("onClick", "return false;");
}}
Использование:
OnClientClick="return false;"
внутри тега asp: LinkButton
вызвать функцию javascript для события onclick. Р>
Вы пытались использовать OnClientClick
?
var myLinkButton = new LinkButton { Text = "Click Here", OnClientClick = "JavaScript: return false;" };
<asp:LinkButton ID="someID" runat="server" Text="clicky" OnClientClick="JavaScript: return false;"></asp:LinkButton>
Что еще можно сделать, если вы хотите сохранить свою позицию прокрутки, это:
<asp:LinkButton runat="server" id="someId" href="javascript: void;" Text="Click Me" />
Возможно, вы захотите, чтобы клиентская функция возвращала false.
<asp:LinkButton runat="server" id="button" Text="Click Me" OnClick="myfunction();return false;" AutoPostBack="false" />
Вы также можете подумать:
<span runat="server" id="clickableSpan" onclick="myfunction();" class="clickable">Click Me</span>
Я использую кликабельный класс, чтобы установить такие вещи, как указатель, цвет и т. д., чтобы его внешний вид был похож на якорный тег, но мне не нужно беспокоиться о том, что он будет отправлен обратно или что мне нужно сделать href = " ; JavaScript: недействительным (0); & Quot; трюк.
Почему бы не использовать пустую панель обновления ajax и связать с ней событие нажатия кнопки ссылки? Таким образом, обновляется только панель обновлений, что позволяет избежать обратной передачи и позволяет запускать ваш javascript
Кажется, никто так не делает:
createEventLinkButton.Attributes.Add("onClick", " if (this.innerHTML == 'Please Wait') { return false; } else { this.innerHTML='Please Wait'; }");
Кажется, это единственный способ, который работает.
В функции jquery ready вы можете сделать что-то вроде ниже -
var hrefcode = $('a[id*=linkbutton]').attr('href').split(':');
var onclickcode = "javascript: if`(Condition()) {" + hrefcode[1] + ";}";
$('a[id*=linkbutton]').attr('href', onclickcode);
Чтобы избежать обновления страницы, если return false
не работает с asp:LinkButton
использование
href="javascript: void;"
или
href="#"
вместе с OnClientClick="return false;"
<asp:LinkButton ID="linkPrint" runat="server" CausesValidation="False" href="javascript: void;"
OnClientClick="javascript:self.print();return false;">Print</asp:LinkButton>
Приведенный выше код вызовет печать браузера без обновления страницы.
используйте ссылку html вместо ссылки asp, и вы можете использовать метку между ссылками html на стороне сервера Контроль р>