Question

J'ai un contrôle ASP.NET linkbutton sur mon formulaire. Je voudrais l'utiliser pour javascript côté client et l'empêcher de poster sur le serveur. (J'aimerais utiliser le contrôle linkbutton pour pouvoir le décortiquer et le désactiver dans certains cas, si bien qu'une balise directe n'est pas préférable).

Comment puis-je empêcher la publication sur le serveur?

Était-ce utile?

La solution

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, la fonctionnalité onclick devient votre validateur. Si c'est faux, le " href " le lien n'est pas exécuté; cependant, s'il est vrai, le href sera exécuté. Cela élimine votre message.

Autres conseils

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

Si vous avez besoin que le serveur génère le texte de ce lien, utilisez un asp: Label comme 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, utilisez asp: Literal comme technique.

Mais à moins que vous n'effectuiez une activité côté serveur à partir de l'événement Click du LinkButton, il ne semble pas y avoir de raison de l'utiliser ici.

Vous pouvez le faire aussi

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

Et cela arrête la postback du bouton de lien

Il suffit de définir href = " # "

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

Je pense que vous devriez étudier à l'aide d'un contrôle HyperLink. Il s’agit d’un contrôle côté serveur (vous pouvez donc manipuler la visibilité, par exemple à partir de code), mais il omet une balise old ol 'anchor standard et ne provoque pas de publication (postback).

En C #, vous feriez quelque chose comme ceci:

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

Cela fait peu de temps que nous venons de le savoir, utilisez

  1. OnClientClick
  2. Renvoie False ()

comme exemple de ligne de code:

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

Il suffit de copier cette ligne à partir de mon code de travail.

Au lieu d'implémenter l'attribut:

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

Utiliser:

OnClientClick="return false;"

à l'intérieur de asp: balise LinkButton

appelez la fonction javascript lors d'un événement onclick.

Avez-vous essayé d'utiliser le 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>

Vous pouvez faire autre chose si vous souhaitez conserver votre position de défilement:

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

Vous pouvez également souhaiter que la fonction côté client renvoie false.

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

Vous pouvez également envisager:

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

J'utilise la classe cliquable pour définir des éléments tels que le pointeur, la couleur, etc., de sorte que son apparence ressemble à une balise d'ancrage, mais je n'ai pas à m'inquiéter de la publication de celle-ci ou de la nécessité de faire href = " ; javascript: void (0); " astuce.

Pourquoi ne pas utiliser un panneau de mise à jour ajax vide et y connecter l'événement de clic du bouton de connexion? De cette façon, seul le panneau de mise à jour sera mis à jour, évitant ainsi une publication et vous permettant d’exécuter votre javascript

Personne ne semble le faire comme ça:

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

Cela semble être le seul moyen qui fonctionne.

Dans la fonction jquery ready, vous pouvez faire quelque chose comme ci-dessous -

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

Pour éviter l'actualisation de la page, si le return false ne fonctionne pas avec asp: LinkButton , utilisez

href="javascript: void;"

ou

href="#"

avec OnClientClick = "return false; "

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

Le code ci-dessus appelle le navigateur, impression sans actualiser la page.

utilisez le lien html au lieu du lien asp et vous pouvez utiliser label entre les liens html du côté serveur contrôle

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top