Question

Voici mon bouton

<asp:Button ID="myButton" Text="Click Me" OnClick="doSomething(10)" runat="server" />

Voici la fonction serveur

public void doSomething(int num)
{
    int someOtherNum = 10 + num;
}

Lorsque j'essaie de compiler le code, le message d'erreur " Nom de la méthode attendu " pour la ligne:

<*>

Qu'est-ce que je fais mal? Ne suis-je pas autorisé à transmettre des valeurs au serveur à partir d'un événement OnClick?

Était-ce utile?

La solution

Il y a deux problèmes ici. Tout d'abord, l'événement onclick a une signature spécifique. C'est

MethodName(object sender, EventArgs e);

Deuxièmement, dans le balisage, vous devez passer le nom de la méthode uniquement, sans parenthèses ni paramètres.

<asp:Button ID="myButton" Text="Click Me" OnClick="doSomething" runat="server" />

Modifiez ensuite votre code ci-dessous comme suit:

public void doSomething(object sender, EventArgs e)
{
    ....
}

La transmission de paramètres peut être effectuée sur un gestionnaire d'événements clic côté client, dans ce cas OnClientClick, mais pas sur le gestionnaire côté serveur.

Autres conseils

Il existe une solution plus simple. Vous pouvez utiliser l'événement OnCommand du bouton ASP. Pour en savoir plus sur: http: // msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.button.oncommand.aspx

Un clic sur le bouton est un gestionnaire d’événements. Pour associer une fonction à un gestionnaire d'événements, vous devez obéir au contrat défini par le gestionnaire d'événements, comme suit: mentionné par Jose. OnClick est lié à une fonction du format void doSomething(object sender, EventArgs e). Votre fonction doit donc être du même format.

Je ne sais pas pourquoi voudrait passer un paramètre au gestionnaire d'événements. Si vous voulez effectuer une manipulation, vous devez le faire en utilisant un autre contrôle.

<asp:TextBox ID="txtNumber" runat="server" /><asp:Button ID="myButton" Text="Click Me" OnClick="doSomething" runat="server" />

Et dans le code

public void doSomething(object sender, EventArgs e)
{
int AnotherNumber=   Int32.Parse(txtNumber.Text)+10;
}

Vous devez modifier la structure de votre méthode pour qu'elle ressemble à

public void doSomething(object sender, EventArgs e)
    {
        ....
    }

et pour passer des paramètres, vous avez besoin d’un moyen de contourner ce problème:

Par exemple, si vous utilisez un contrôle HTML, vous pouvez modifier votre paramètre avec une valeur d'attribut (telle que l'ID dans cet exemple), puis le récupérer dans le gestionnaire côté serveur

.

c'est-à-dire faire un contrôle en changeant la couleur du style

Html:

<a href="" id="Grey" runat="server" onserverclick='ApplyStyleEvent'></a>

Code:

protected void ApplyStyleEvent(object sender, EventArgs e)
{
    Profile["SelectedStyle"] = ((HtmlControl)sender).ID;
    Response.Redirect("");
}

et ainsi de suite.

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