7
votes

Puis-je créer un ASP.NET ImageButton qui ne pose pas de publication?

J'essaie d'utiliser le contrôle ImageButton pour une exécution du script client uniquement. Je peux spécifier le script côté client pour exécuter à l'aide de la propriété OnClientClick, mais comment puis-je l'arrêter d'essayer de poster chaque fois que l'utilisateur clique-t-il? Il n'y a aucune raison de publier lorsque ce bouton est cliqué. J'ai défini des causesValidation sur false, mais cela ne l'empêche pas de poster.


2 commentaires

Toute raison de ne pas utiliser l'événement OnClick d'une balise IMG?


@Bigjason: J'aimerais l'éviter si possible. Ce bouton est profondément complexe et est construit sur le côté serveur.


8 Réponses :


1
votes
<image src="..." onclick="DoYourThing();" />

2 commentaires

Ce serait parfait, sauf que ce bouton est construit de manière dynamique sur le côté serveur et doit être un objet .NET.


Vous pouvez toujours avoir un asp: contrôle littéral sur votre page, et dans votre code derrière le texte défini de manière dynamique sur celle-ci, c'est-à-dire: myLiteral.text = " ";



1
votes

Utilisez une commande d'image latérale du serveur xxx

à peu près sûr que vous pouvez ajouter le client onclick événement à cela.


0 commentaires

4
votes

Voici une façon dont vous pouvez le faire sans contraction du fonctionnement du post-pack d'autres commandes:

Définissez votre bouton comme ceci: P>

<script type="text/javascript">

function my__doPostBack(eventTarget, eventArgument) {
    //Just swallow the click without postback of the form
}
</script>


2 commentaires

Le "mon" tour a fonctionné pour moi, mais "retourne faux" à la fin qui m'a fait sentir moins icky


J'ai le même problème ... Stackoverflow.com/questions/25979847/... . Je suis sur le point de tester votre solution maintenant.



2
votes

Une autre solution serait de définir un postbackurl qui ne fait rien xxx


0 commentaires

20
votes

Je sais que ce problème a déjà été répondu, mais une solution simple consiste à renvoyer false de la méthode HTML OnClick (c'est-à-dire la méthode ASPX OnClientClick) par exemple

<asp:ImageButton ID="ImageNewLink" runat="server" 
 ImageUrl="~/images/Link.gif" OnClientClick="DoYourStuff(); return false;"  />


3 commentaires

J'aimerais suggérer une option supplémentaire de onclientClick = "retour doyourstuff ();". Puis retournez fausse à l'intérieur de doyournstuff (). De cette façon, Doyourstuff peut retourner vrai ou faux en fonction d'autres facteurs et permettant de supporter toujours le post-plan de certaines conditions.


Si j'ai plusieurs boutons d'une grilleView, la mine ne fonctionne que la première fois et à tout moment après, la fonction ne se déclenche pas. Stackoverflow.com/Questtions/25979847/...


@TTT C'est ce que j'ai essayé d'abord, mais pour une raison quelconque, cela ne fonctionne pas. Bien que si je place le renvoie false; dans le OnClientClick en tant que codeclimber suggéré, cela fonctionne.



1
votes

Ceci fonctionne bien pour moi:

Utilisez onclientClick pour écrire votre script et postbackurl = "JavaScript: vide (0);" pour éviter le post-plan. xxx


0 commentaires

1
votes

solution 1 xxx pré>

ou SOLUTION 2 P>

protected void Page_Load(object sender, System.EventArgs e)
{
    if (this.IsPostBack) {
        string eventTarget = this.Request("__EVENTTARGET") == null ? string.Empty : this.Request("__EVENTTARGET");
        string eventArgument = this.Request("__EVENTARGUMENT") == null ? string.Empty : this.Request("__EVENTARGUMENT");
    }
}


0 commentaires

0
votes

Utilisez OnClientClick pour écrire votre script et postbackurl = "JavaScript: void (0);" Pour éviter le post-plant


0 commentaires