Отключить обратную передачу на


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

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

16 54

16 ответов:

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

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

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

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

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

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

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

и он останавливает кнопку обратной связи

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

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

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

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

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

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

  1. OnClientClick
  2. Return False()

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

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

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

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

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

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 tag

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

вы также можете захотеть, чтобы функция на стороне клиента возвращала 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:void(0);".

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

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

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

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

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

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

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

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

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