62 votes

Désactiver le postback sur un <ASP:LinkButton>.

J'ai un contrôle de bouton de liaison ASP.NET sur mon formulaire. Je voudrais l'utiliser pour le javascript côté client et l'empêcher de renvoyer des messages au serveur. (J'aimerais utiliser le contrôle de bouton de liaison pour pouvoir l'habiller et le désactiver dans certains cas, donc une balise directe n'est pas préférable).

Comment puis-je l'empêcher de renvoyer des messages au serveur ?

68voto

Russell Myers Points 1438

Code ASPX :

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

Code derrière :

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

Ce qui est rendu en HTML est :

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

Dans ce cas, c'est la fonctionnalité onclick qui devient votre validateur. Si elle est fausse, le lien "href" n'est pas exécuté ; en revanche, si elle est vraie, le lien "href" sera exécuté. Cela élimine votre retour de courrier.

1 votes

<asp:LinkButton ID="LinkButton5" runat="server" OnClick="A_Click" CssClass="linkOff" Text="Edit"></asp:LinkButton> et en ajoutant ce qui précède, quand on clique, rien ne se passe :/

0 votes

Parfait, je me suis débattu avec cela pendant un moment car je ne voulais pas que le __postback soit appelé à la place d'un JS. beaucoup apprécié.

40voto

John Rudy Points 16436

Cette réponse peut sembler peu utile... Mais pourquoi utilisez-vous un LinkButton pour quelque chose de purement client-side ? Utilisez une balise d'ancrage HTML standard et définissez sa balise onclick à votre Javascript.

Si vous avez besoin que le serveur génère le texte de ce lien, utilisez une balise asp:Label comme le contenu entre les balises de début et de fin de l'ancre.

Si vous devez modifier dynamiquement le comportement du script en fonction du code côté serveur, pensez à asp:Literal comme une technique.

Mais à moins que vous ne réalisiez une activité côté serveur à partir de l'événement Click du LinkButton, il ne semble pas y avoir beaucoup d'intérêt à l'utiliser ici.

0 votes

Je suis d'accord. Je souhaite avant tout utiliser un skin que j'ai déjà créé pour les boutons de lien utilisés ailleurs.

0 votes

Ne pouvez-vous pas modifier le skin, ou baser les styles de l'ancre donnée sur ceux utilisés dans le skin ?

2 votes

Vous pouvez favoriser un bouton de lien même si le postback du serveur est désactivé lorsque : 1) Vous souhaitez toujours bénéficier de l'avantage d'un contrôle implémentant INamingContainer. Par exemple, vous avez plusieurs contrôles utilisateur sur une page où chacun contient un LinkButton qui a besoin d'un ID unique. 2) Vous souhaitez conserver la validation du client asp.

26voto

Denis Points 151

Vous pouvez aussi le faire

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

Et il arrête le postback du bouton de lien

0 votes

Cela fonctionne, mais le problème est que si vous avez une opération en cours, comme la suppression de l'enregistrement après une pop-up modale, cela ne fonctionne pas du tout. La page est simplement rafraîchie. Rien d'autre.

15voto

Randall Sutton Points 514

Il suffit de mettre href="#"

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

0 votes

D'après ce que j'ai testé, cela fera défiler la page vers le haut.

6voto

Runscope API Tools Points 43859

Je pense que vous devriez envisager d'utiliser un contrôle HyperLink. Il s'agit d'un contrôle côté serveur (vous pouvez donc manipuler la visibilité et d'autres éléments à partir du code), mais il ne comporte pas de balise d'ancrage classique et ne provoque pas de retour arrière.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X