Подтвердить что ты не робот

Отключите обратную передачу в <ASP: LinkButton>

У меня есть элемент управления ASP.NET linkbutton в моей форме. Я хотел бы использовать его для javascript на стороне клиента и предотвратить его отправку обратно на сервер. (Я бы хотел использовать элемент управления linkbutton, чтобы я мог его обмануть и отключить в некоторых случаях, поэтому тег прямой вверх не является предпочтительным).

Как предотвратить его отправку на сервер?

4b9b3361

Ответ 1

Код 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 будет выполнен. Это устраняет ваш пост.

Ответ 2

Это может звучать как бесполезный ответ... Но почему вы используете LinkButton для чего-то чисто клиентского? Используйте стандартный тег привязки HTML и установите его действие onclick на ваш Javascript.

Если вам нужен сервер для генерации текста этой ссылки, используйте asp:Label как содержимое между стартовыми и конечными тегами привязки.

Если вам необходимо динамически изменять поведение script на основе кода на стороне сервера, рассмотрите asp:Literal как метод.

Но если вы не делаете активность на стороне сервера из события Click на LinkButton, просто не кажется, что это очень важно использовать здесь.

Ответ 3

Вы можете сделать это тоже

...LinkButton ID="BtnForgotPassword" runat="server" OnClientClick="ChangeText('1');return false"...

И он останавливает обратную передачу кнопки

Ответ 4

Просто установите href= "#"

<asp:LinkButton ID="myLink" runat="server" href="#">Click Me</asp:LinkButton>

Ответ 5

Я думаю, вам следует исследовать с помощью элемента управления HyperLink. Это серверный элемент управления (так что вы можете управлять видимостью и таким кодом), но он опускает обычный якорь-якорь и не вызывает обратную передачу.

Ответ 6

В С# вы сделали бы что-то вроде этого:

MyButton.Attributes.Add("onclick", "put your javascript here including... return false;");

Ответ 7

вызов функции java script в событии onclick.

Ответ 8

Вы пытались использовать 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>

Ответ 9

Только что через несколько минут правильный способ сделать это - использовать

  • OnClientClick
  • Return False()

в качестве следующей примерной строки кода:

<asp:LinkButton ID="lbtnNext" runat="server" OnClientClick="findAllOccurences(); return false();" Visible="false"/>

Просто скопировал эту строку из моего рабочего кода.

Ответ 10

Возможно, вы также захотите вернуть функцию на стороне клиента 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);" трюк.

Ответ 11

Кажется, никто не делает это так:

createEventLinkButton.Attributes.Add("onClick", " if (this.innerHTML == 'Please Wait') { return false; } else {  this.innerHTML='Please Wait'; }");

Кажется, это единственный способ, который работает.

Ответ 12

Почему бы не использовать пустую панель обновления ajax и связать с ней событие clickbutton click? Таким образом обновится только панель обновления, что позволит избежать обратной передачи и позволит вам запустить javascript

Ответ 13

Вместо реализации атрибута:

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

Ответ 14

Что-то еще вы можете сделать, если вы хотите сохранить свою позицию прокрутки:

<asp:LinkButton runat="server" id="someId" href="javascript: void;" Text="Click Me" />

Ответ 15

В функции jquery ready вы можете сделать что-то вроде ниже -

var hrefcode = $('a[id*=linkbutton]').attr('href').split(':');
var onclickcode = "javascript: if`(Condition()) {" + hrefcode[1] + ";}";
$('a[id*=linkbutton]').attr('href', onclickcode);

Ответ 16

используйте ссылку html вместо ссылки asp, и вы можете использовать метку между ссылкой html для серверной части Контроль