Вопрос

У меня есть элемент управления 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;");

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

<Ол>
  • <код> OnClientClick
  • 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 на стороне сервера Контроль

    Лицензировано под: CC-BY-SA с атрибуция
    Не связан с StackOverflow
    scroll top