Pergunta

Eu tenho um controle linkbutton ASP.NET no meu formulário. Eu gostaria de usá-lo para javascript no lado do cliente e impedi-lo de publicar a volta ao servidor. (Eu gostaria de usar o controle linkbutton para que eu possa esfolar-lo e desativá-lo em alguns casos, de modo a tag se em linha reta não é preferido).

Como faço para impedir que ele postagem de volta para o servidor?

Foi útil?

Solução

código ASPX:

<asp:LinkButton ID="someID" runat="server" Text="clicky"></asp:LinkButton>

código por trás:

public partial class _Default : System.Web.UI.Page 
{
    protected void Page_Load(object sender, EventArgs e)
    {
        someID.Attributes.Add("onClick", "return false;");
    }
}

O que processa como HTML é:

<a onclick="return false;" id="someID" href="javascript:__doPostBack('someID','')">clicky</a>

Neste caso, o que acontece é a funcionalidade onclick se torna o seu validador. Se for falsa, o link "href" não é executado; no entanto, se é verdade a href serão executados. Isso elimina as costas post.

Outras dicas

Isto pode soar como uma resposta inútil ... Mas por que você está usando um LinkButton por algo puramente do lado do cliente? Use uma tag âncora HTML padrão e definir sua ação onclick à sua Javascript.

Se você precisar do servidor para gerar o texto desse link, em seguida, usar um asp:Label como o conteúdo entre as tags de início e fim da âncora.

Se você precisar alterar dinamicamente o comportamento roteiro baseado no código do lado do servidor, considere asp:Literal como uma técnica.

Mas a menos que você está fazendo a atividade do lado do servidor a partir do evento Click do LinkButton, há simplesmente não parece ser muito ponto para usá-lo aqui.

Você pode fazê-lo demasiado

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

E parar o botão de link de postagem

Basta definir href = "#"

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

Eu acho que você deve investigar usando um controle HyperLink. É um controle do lado do servidor (assim você pode manipular a visibilidade e tal a partir do código), mas omite uma ol' tag regulares âncora e não causa um postback.

Em C #, você faria algo assim:

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

Apenas por isso antes alguns minutos, a maneira correta de fazê-lo é uso

  1. OnClientClick
  2. Return False()

como o seguinte exemplo linha de código:

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

Apenas copiado essa linha do meu código de trabalho.

Em vez de implementar o atributo:

public partial class _Default : System.Web.UI.Page{
 protected void Page_Load(object sender, EventArgs e)
 {
    someID.Attributes.Add("onClick", "return false;");
 }}

Use:

OnClientClick="return false;"

dentro de asp: LinkButton tag

função de chamada de javascript no evento onclick.

Você já tentou usar o 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>

Outra coisa que você pode fazer, se quiser preservar a sua posição de rolagem é esta:

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

Você também pode querer ter a falsa função do lado do cliente de retorno.

<asp:LinkButton runat="server" id="button" Text="Click Me" OnClick="myfunction();return false;" AutoPostBack="false" />

Você também pode considerar:

<span runat="server" id="clickableSpan" onclick="myfunction();" class="clickable">Click Me</span>

Eu uso a classe clicável para as coisas do jogo como ponteiro, cor, etc. de modo que sua aparência é semelhante a uma marca de âncora, mas eu não precisa se preocupar com isso voltar publicado ou ter que fazer a href =" javascript: void (0);" truque.

Por que não usar um painel de atualização ajax vazio e fio evento de clique do linkbutton a ele? Desta forma, só o painel de atualização serão atualizados, evitando assim uma nova postagem e permitindo que você execute o seu javascript

Ninguém parece estar fazendo isso como este:

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

Esta parece ser a única maneira que as obras.

Na função pronto jquery você pode fazer algo como abaixo -

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

Para evitar atualização da página, se o return false não está funcionando com o uso asp:LinkButton

href="javascript: void;"

ou

href="#"

juntamente com OnClientClick="return false;"

<asp:LinkButton ID="linkPrint" runat="server" CausesValidation="False" href="javascript: void;"
        OnClientClick="javascript:self.print();return false;">Print</asp:LinkButton>

Acima é o código irá chamar a impressão do navegador sem atualizar a página.

link uso html em vez de ligação asp e você pode usar etiqueta entre html link para o lado do servidor controle

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top