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 :

retourner un message quand duplicate [Débutant]


Sujet :

ASP.NET MVC

  1. #1
    Membre éprouvé
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    876
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2005
    Messages : 876
    Par défaut retourner un message quand duplicate
    Bonjour,

    Dans une petite application test, j'ai une table "Movies" qui en plus de l'ID comprend juste un champ "Nom"

    J'ai ajouté une contrainte au niveau de la DB pour que ce champ "nom" soit unique.

    Lorsque j'encode un doublon, une erreur (et c'est normal) est générée lors du db.SaveChanges.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    if (ModelState.IsValid)
                {
                    db.Movies.Add(Movie);
                    try
                    {
                    db.SaveChanges();
                    }
                    catch (Exception)
                    {
     
                        //throw;
                    }
     
                    return RedirectToAction("Index");
                }
    Comme je l'ai mise dans un try catch, je reviens à ma liste de films.
    Ce que je voudrais, c'est rester dans mon formulaire de création et recevoir une indication comme quoi l'élément que je veux créé existe déjà.

  2. #2
    Membre émérite
    Homme Profil pro
    Architecte technique
    Inscrit en
    Septembre 2005
    Messages
    462
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 462
    Par défaut
    Yop,

    Il faut que tu sois sûre que sur ton catch tu catch bien l'erreur sur ta contrainte. Et tu rajoute une erreur à ton modelState qui prend comme paramètre le nom de la propriété concerné et le message d'erreur !
    Ensuite tu renvois ta vue avec ton model :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    if (ModelState.IsValid)
                {
                    db.Movies.Add(Movie);
                    try
                    {
                    db.SaveChanges();
                    }
                    catch (Exception)
                    {
                         ModelState.AddModelError("Nom", "Le nom est déjà utilisé");
                         return View(Movie);
                    }
     
                    return RedirectToAction("Index");
                }

  3. #3
    Membre éprouvé
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    876
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2005
    Messages : 876
    Par défaut
    Bonjour Katkiller,

    Merci pour ta réponse... exactement ce que je voulais faire, ça marche super.

    Pour ce qui est d'être sûr d'identifier la bonne erreur, j'utilise :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
     catch (Exception myex)
                    {
                        if (myex.InnerException.InnerException.Message.Contains("Violation of UNIQUE KEY constraint 'UC_Nom'"))
                        {
                            ModelState.AddModelError("MovieNom", "Le nom \"" + movie.MovieNom+ "\" est déjà utilisé");
                        }
                        else
                        {
                            ModelState.AddModelError("MovieNom", "Le film n'a pas pu être sauvé");
                        }
                        return View(movie);
     
                    }
    Merci

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 02/03/2011, 18h25
  2. [XL-2007] Empêcher l'affichage d'un message quand suppression d'un WorkSheet
    Par oupyr dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 01/05/2010, 15h08
  3. Réponses: 5
    Dernier message: 14/12/2009, 09h36
  4. [OL-2007] retourner mes messages vers yahoo
    Par rvfranck dans le forum Outlook
    Réponses: 2
    Dernier message: 21/04/2009, 13h20
  5. Mettre un message quand pas de document
    Par SueSunny dans le forum VBA Access
    Réponses: 2
    Dernier message: 18/06/2008, 22h45

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