Отключить обратную передачу на <ASP: LinkButton> - PullRequest
55 голосов
/ 07 октября 2008

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

Как я могу предотвратить повторную публикацию на сервер?

Ответы [ 17 ]

61 голосов
/ 07 октября 2008

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 становится вашим средством проверки. Если значение равно false, ссылка "href" не выполняется; однако, если это правда, href будет выполнен. Это исключает ваш пост обратно.

37 голосов
/ 07 октября 2008

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

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

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

Но если вы не выполняете действия на стороне сервера из события Click LinkButton, похоже, здесь нет особого смысла его использовать.

25 голосов
/ 01 февраля 2011

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

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

И это останавливает обратную связь кнопки ссылки

14 голосов
/ 12 мая 2012

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

<asp:LinkButton ID="myLink" runat="server" href="#">Click Me</asp:LinkButton>
6 голосов
/ 07 октября 2008

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

4 голосов
/ 07 октября 2008

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

MyButton.Attributes.Add("onclick", "put your javascript here including... return false;");
3 голосов
/ 28 сентября 2012

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

  1. OnClientClick
  2. Return False()

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

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

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

2 голосов
/ 19 октября 2010

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

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

1 голос
/ 19 мая 2011

Вы пытались использовать 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>
1 голос
/ 08 ноября 2013

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

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