IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

ASP.NET MVC Discussion :

Equivalent OnClick en MVC2


Sujet :

ASP.NET MVC

  1. #1
    Membre habitué

    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Décembre 2010
    Messages
    126
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC

    Informations forums :
    Inscription : Décembre 2010
    Messages : 126
    Points : 196
    Points
    196
    Par défaut Equivalent OnClick en MVC2
    Bonjour,

    Je suis habitué à faire du dev webform, et je viens de commencer à travailler avec ASP.NET MVC2 et j'ai une question toute bête mais je ne trouve pas la solution.

    Ma question :

    J'ai défini sur un bouton un événement OnClick dans ma page index.aspx

    Code C# : Sélectionner tout - Visualiser dans une fenêtre à part
    <asp:Button ID="Btn" runat="server" Text="Test" OnClick="btn_Click" />

    Et je souhaite définir ma methode "btn_Click", cependant en MVC y a pas de code behind, donc pas de index.aspx.cs
    J'ai tenté de mettre la définiton de la méthode dans le HomeController.cs mais ça ne fonctionne pas.

    Y a t'il un moyen de faire ce que je souhaite en MVC2 ?

    Merci de vos réponses.

  2. #2
    Rédacteur
    Avatar de Nathanael Marchand
    Homme Profil pro
    Expert .Net So@t
    Inscrit en
    Octobre 2008
    Messages
    3 615
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Expert .Net So@t
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2008
    Messages : 3 615
    Points : 8 080
    Points
    8 080
    Par défaut
    C'est pour faire quoi ton bouton?

  3. #3
    Membre habitué

    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Décembre 2010
    Messages
    126
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC

    Informations forums :
    Inscription : Décembre 2010
    Messages : 126
    Points : 196
    Points
    196
    Par défaut
    c'est juste pour tester une connexion vers une base oracle :

    Code c# : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    protected void btn_Click(object sender, EventArgs e)
            {
                OracleConnection conn = new OracleConnection();
                conn.ConnectionString = "Data Source=NEWDB;User ID=SYSTEM;Password=admin";
                try
                {
                    conn.Open();
                    conn.Close();
                    MessageBox.Show("Connection successful!");
                }
                catch (Exception ex)
                {
                    MessageBox.Show("Error connecting to Oracle");
                }
            }

  4. #4
    Membre actif
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2010
    Messages
    119
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2010
    Messages : 119
    Points : 202
    Points
    202
    Par défaut
    bonjour,
    Le MVC n'est pas comme le webForm tu n'a pas de code beind tu doit utiliser les action de controleur pour communiquer avec les vues.
    Il te suffit de faire deux actions dans ton contrôleur une de type get qui va permettre d'afficher ta page de départ et une autre de type post qui va traiter ton bouton.
    Par exemple sur une vue de suppression du aura quelque chose comme sa dans ton contrôleur:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    public ActionResult Delete(int id, int idcontenu)
            {
    ... du code...
                return View(_Service.GetArticle(id));
            }
    qui permet d'afficher un article. et la deuxième action:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     [HttpPost]
            public ActionResult Delete(wsgModuleArticle wsgArticleToDelete)
            {
                if (_Service.DeleteArticle(wsgArticleToDelete))
                    return RedirectToAction("Index", new { id = wsgArticleToDelete.idWsgContenuWsgModuleArticle });
                return View();
            }
    qui effectue la suppression et redirige sur la page index en cas de réussite ou reste sur la page de suppression si il y a un problème.

    dans ta vue tu a un simple bouton de type submit:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <input type="submit" value="suppression" />
    Sinon tu peut aller voir ces post sur des forums:
    premier post
    deuxième post
    ou les tuto de developpez.com avec les quels je me suis formé et qui sont plutôt bien

    J'espère t'avoir aidé
    cordialement,

  5. #5
    Rédacteur
    Avatar de Nathanael Marchand
    Homme Profil pro
    Expert .Net So@t
    Inscrit en
    Octobre 2008
    Messages
    3 615
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Expert .Net So@t
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2008
    Messages : 3 615
    Points : 8 080
    Points
    8 080
    Par défaut
    Mais faut bien comprendre que l'asp.net mvc faut pas du tout le penser comme ca!
    J'irai même jusqu'à dire qu'il faut que t'oublies tout d'ASP.Net et que tu fasses le contraire!

    Ce qu'il faut que tu fasses:
    • Créer une nouvelle action dans ton controller.
    • Mettre cette action comme destination de ton bouton
    • Mettre ton code dans l'action en question

  6. #6
    Membre habitué

    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Décembre 2010
    Messages
    126
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC

    Informations forums :
    Inscription : Décembre 2010
    Messages : 126
    Points : 196
    Points
    196
    Par défaut
    merci de vos réponses.
    Bon en gros dans mon controller je définis mon ActionResult, je place le code de test de ma connection vers la base de donnée mais ce que je ne comprend pas c'est comment "Mettre cette action comme destination du bouton" !!!

  7. #7
    Membre actif
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2010
    Messages
    119
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2010
    Messages : 119
    Points : 202
    Points
    202
    Par défaut
    re,
    quand tu n'as qu'un seul bouton dans ta vue, lorsque tu clic tu es dirigé tous seul vers l'action post de ton contrôleur.
    Oublis pas d'annoter ton contolleur post avec
    [HttpPost]
    et tu ne devrais pas avoir de probleme.
    PS: ta vue et le nom de tes actions dans le contrôleur doivent être identique.
    dans mon exemple mes actions get et post de contrôleur s'appellent "delete" et ma vue est delete.aspx
    cordialement

  8. #8
    Membre habitué

    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Décembre 2010
    Messages
    126
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC

    Informations forums :
    Inscription : Décembre 2010
    Messages : 126
    Points : 196
    Points
    196
    Par défaut
    Alors, j'ai bien décoré mon ActionResult avec l'attribut [HttpPost] et puis j'ai mis juste un submit

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <input type="submit" value="Connect Now"  />
    j'ai mis dans mon code d'ActionResult un messageBox pour tester et il ne s'affiche même pas lorseque je clic sur le bouton !!!

  9. #9
    Membre actif
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2010
    Messages
    119
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2010
    Messages : 119
    Points : 202
    Points
    202
    Par défaut
    Avec asp.net MVC tu ne peut plus utiliser tout ce qui est contrôle asp.net standard. Tout est fait pour remplacer ces controle que tu ne peut plus utilisé par du javascript et notament du JQuery. essaie de remplacer tes messageBox par quelque chose comme window.alert() ou window.confirme().
    cordialement

  10. #10
    Membre habitué

    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Décembre 2010
    Messages
    126
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC

    Informations forums :
    Inscription : Décembre 2010
    Messages : 126
    Points : 196
    Points
    196
    Par défaut
    le problème n'est pas dans le MessageBox, j'ai même remplacer ce dernier par un simple ViewData["Machin"] que je modifie selon le statut de le connection O.K ou K.O

    J'ai mis un point de debug dans la methode décoré avec l'HttpPost et il ne passe pas dedans lors du clic sur le bouton, j'ai l'impression de retourner sur les bancs de l'école avec ce problème

  11. #11
    Membre actif
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2010
    Messages
    119
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2010
    Messages : 119
    Points : 202
    Points
    202
    Par défaut
    alors ton bouton doit être dans une balise form donc tu a ton contrôleur avec tes deux action get et post:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
            public ActionResult Index()
            {
                return View();
            }
            [HttpPost]
            public ActionResult Index(FormCollection collection)
            {
                 ViewData["testeAffiche"] = "teste réussie";
                 return View();
            }
    et ta vue avec ton bouton dans la balise beginForm:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    <h2>teste</h2>
     
        <p> veuillez apuyer sur le bouton</p>
     <p>
                    <%:Html.Encode( (string)ViewData["testeAffiche"])%>
                </p>
                <% using (Html.BeginForm())
           { %>
                <p>
                <input type="submit" value="tester" />
                </p>
                    <% } %>
    L'exemple affiche le texte de la viewData lorsque l'on appuis sur le bouton
    cordialement,

  12. #12
    Rédacteur
    Avatar de The_badger_man
    Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2005
    Messages
    2 745
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 745
    Points : 8 538
    Points
    8 538
    Par défaut
    Honnetement, vaut mieux que t'arretes ici et que tu lisent des tutos/vidéos avant afin comprendre le concept, sinon tu va passer ta journée à poster des questions.

    Tu as les tutos MVC officiels traduits en français
    http://dotnet.developpez.com/mvc/

    Le site officiel
    http://www.asp.net/mvc
    Les règles du forum
    Le trio magique : FAQ + Cours + fonction rechercher
    Mes articles
    Pas de questions par messages privés svp

    Software is never finished, only abandoned.

  13. #13
    Membre habitué

    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Décembre 2010
    Messages
    126
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC

    Informations forums :
    Inscription : Décembre 2010
    Messages : 126
    Points : 196
    Points
    196
    Par défaut
    merci darkcrift, je vois comment procéder maintenant.

    The_badger_man, merci pour les liens je vais me pencher un peu + sur la documentation, mais je me suis dit que le moyen le plus rapide d'apprendre et de commencer un vrai projet et je me suis jeté dedans le tête dans le guidon, je vais prendre un peu + de recul.

  14. #14
    Rédacteur
    Avatar de Nathanael Marchand
    Homme Profil pro
    Expert .Net So@t
    Inscrit en
    Octobre 2008
    Messages
    3 615
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Expert .Net So@t
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2008
    Messages : 3 615
    Points : 8 080
    Points
    8 080
    Par défaut
    Citation Envoyé par NTIC13 Voir le message
    The_badger_man, merci pour les liens je vais me pencher un peu + sur la documentation, mais je me suis dit que le moyen le plus rapide d'apprendre et de commencer un vrai projet et je me suis jeté dedans le tête dans le guidon, je vais prendre un peu + de recul.
    Disons que c'est pas une simple mise à jour d'ASP.NET. C'est vraiment une autre manière de penser!

  15. #15
    Membre habitué

    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Décembre 2010
    Messages
    126
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC

    Informations forums :
    Inscription : Décembre 2010
    Messages : 126
    Points : 196
    Points
    196
    Par défaut
    Citation Envoyé par Nathanael Marchand Voir le message
    Disons que c'est pas une simple mise à jour d'ASP.NET. C'est vraiment une autre manière de penser!
    Oui, je suis conscient, j'ai déjà touché à du MVC côté PHP5 avec ZendFramework, et je fait le rapprochement avec ASP.NET MVC, c'est pas complétement différent, reste maintenant à me remémorer mes connaissances que j'ai acquise sur ce projet fait y a 2 ans déjà

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Equivalent de onclick en HTML/CSS
    Par dashed dans le forum Balisage (X)HTML et validation W3C
    Réponses: 3
    Dernier message: 10/02/2014, 09h37
  2. [Kylix] Equivalent ShellExec en CLX
    Par Anonymous dans le forum EDI
    Réponses: 7
    Dernier message: 14/08/2002, 11h55
  3. Un Sender peut-il s'auto-détruire lors d'un onClick?
    Par Flo. dans le forum C++Builder
    Réponses: 2
    Dernier message: 17/07/2002, 10h31
  4. Equivalent à ExeName pour une DLL
    Par Smortex dans le forum Langage
    Réponses: 7
    Dernier message: 16/07/2002, 21h07
  5. [Kylix] equivalent winsock avec kylix
    Par Victor dans le forum EDI
    Réponses: 2
    Dernier message: 08/05/2002, 07h43

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo