web-dev-qa-db-fra.com

Code C # derrière l'événement Button Click, ASP.NET

Je travaille avec le code HTML fourni par un collègue dans .aspx et je dois programmer dans .aspx.cs (C #) la fonctionnalité du bouton qu'il a créé avec HTML . Le code avec lequel je traite est le suivant:

    </div>
            <button style="padding: 10px; margin-bottom: 10px;" class="w3-round w3-blue">Ship</button>
            <button style="padding: 10px; margin-bottom: 10px;" class="w3-round w3-blue">Rate</button>

    </div>

Je débute dans le langage HTML, mais lorsque je cherche des solutions à des questions similaires, le code HTML d’un bouton fonctionnel ressemble davantage à celui de

<button type="submit" runat="server" id="btnLogin" class="button" onclick="btnLogin_Click();">

et parfois avec un 

<asp:

au début. J'ai simplement essayé d'ajouter au HTML les champs runat et onclick qui correspondent à une méthode C # dans le code aspx.cs derrière, mais je n'ai pas été en mesure de faire en sorte que le clic du bouton déclenche réellement la méthode dans le code derrière. J'ai supposé que si j'ajoutais la méthode avec le nom qui suit onclick au code C # aspx.cs, il l'exécuterait simplement en cliquant sur le bouton mais je me trompe clairement.

Puis-je programmer la fonctionnalité du bouton dans le code derrière sans changer le code HTML qui m'a été fourni? Ou dois-je modifier le code HTML en premier et si oui comment?

5
KMcL

Vous pourriez probablement vous en tirer en ajoutant l'attribut runat="server" à vos boutons, mais je ne l'ai jamais essayé et, franchement, utiliser les contrôles Web appropriés serait la meilleure solution.

Les remplacer ne devrait en aucun cas changer l'apparence de la page. Il suffit d’ajouter CssClass="xxx" pour appliquer le fichier css s’il en existe un, sinon ils restituent les éléments HTML standard de toute façon.

Votre balisage devrait ressembler à ceci:

<asp:Button runat="server" id="btnLogin" Text="Log In" OnClick="btnLogin_Click" />

Le gestionnaire d'événements correspondant dans votre code ressemblerait à ceci:

protected void btnLogin_Click(object sender, EventArgs e)
{
    // Here's where you do stuff.
}
8
Ortund

Il existe des moyens d'atteindre le code asp.net derrière le gestionnaire à partir des contrôles HTML. Vous pouvez essayer d'ajouter un gestionnaire onserverclick ou une publication avec des arguments et ajouter un gestionnaire à la publication dans le gestionnaire.

Quelques liens pour vous aider:

https://forums.asp.net/t/1650304.aspx?Calling+code+behind+function+from+a+html+button

appelant l'événement côté serveur à partir du contrôle de bouton html

0
praty

vous devez remplacer le 

onclick="btnLogin_Click();"

avec

onclick="btnLogin_Click"

car la propriété onClick des boutons asp.net doit contenir le nom de la fonction appelée dans le fichier aspx.cs et non l'appel réel.

0
Plargato

Ma suggestion serait de changer le contrôle HTML en <asp:Button /> et de faire en sorte que le gestionnaire d'événements soit câblé par ASP.NET. La syntaxe ressemblerait à quelque chose comme ci-dessous

<asp:Button ID="Test" runat="server" Text="Button" OnClick="Test_Click" />
0
Praveen

Si vous utilisez un outil tel que Visual Studio/Express, ouvrez la page en question (la page aspx).

Depuis la barre d’outils des contrôles, faites glisser un bouton vers la page.

Si vous double-cliquez sur le bouton en mode Création, le gestionnaire d'événements sera automatiquement créé dans le code situé derrière.

Le contrôle de bouton a deux propriétés OnClick et OnClientClick. Utilisez OnClientClick pour déclencher du code JavaScript sur la page.

J'espère que ça aide

0
Darren Street