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 :

Validation de formulaire


Sujet :

ASP.NET MVC

  1. #1
    Membre du Club
    Inscrit en
    Octobre 2009
    Messages
    95
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Octobre 2009
    Messages : 95
    Points : 57
    Points
    57
    Par défaut Validation de formulaire
    Salut à tous ;
    Je suis en train de travailler Tutoriels : développement d’une application de gestion de contacts avec ASP.NET MVC (C#). J’ai bloqué au niveau 3 Ajout de la validation de formulaires. J’ai travaillé une application ASP.Net MVC 2 Web application. Mon page HTML create est la suivante :
    Controllers\ContactController.cs

    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
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Web;
    using System.Web.Mvc;
    using ContactManager.Models;
    using System.Text.RegularExpressions;
     
    namespace ContactManager.Controllers
    {
        public class ContactController : Controller
        {
            private ContactManagerBDEntities  _entities = new ContactManagerBDEntities ();
            protected void ValidationContat(Contact contactToValidet)
            {
                if (contactToValidet.Nom.Trim().Length == 0)
                    ModelState.AddModelError(string.Empty, "First name is required.");
                if (contactToValidet.Prenom.Trim().Length == 0)
                    ModelState.AddModelError(string.Empty, "Last name is required.");
                if (contactToValidet.Phone.Trim().Length > 0 && !Regex.IsMatch(contactToValidet.Phone, @"((\(\d{3}\) ?)|(\d{3}-))?\d{3}-\d{4}"))
                    ModelState.AddModelError(string.Empty, "Mail non valid");
                if (contactToValidet.Email.Trim().Length > 0 && !Regex.IsMatch(contactToValidet.Email, @"^[\w-\.]+@([\w-]+\.)+[\w-]{2,4}$"))
                    ModelState.AddModelError(string.Empty, "Mail non valid");
     
            }
     
            //
            // GET: /Home/
     
            public ActionResult Index()
            {
                return View(_entities.ContactDataSet.ToList());
            }
     
            //
            // GET: /Home/Create
     
            public ActionResult Create()
            {
                return View();
            } 
     
            //
            // POST: /Home/Create
     
            [HttpPost]
     
            public ActionResult Create([Bind(Exclude = "Id")] Contact contactToCreate)
            {
                ValidationContat(contactToCreate);
                if (!ModelState.IsValid)
                    return View();
     
                try
                {
                    _entities.AddToContactDataSet(contactToCreate);
                    _entities.SaveChanges();
                    return RedirectToAction("Index");
                }
                catch
                {
                    return View();
                }
            }
     
            //
            // GET: /Home/Edit/5
     
            public ActionResult Edit(int id)
            {
                var contactToEdit = (from c in _entities.ContactDataSet 
                                     where c.Id == id
                                     select c).FirstOrDefault();
     
                return View(contactToEdit);
            }
     
            //
            // POST: /Home/Edit/5
     
            [HttpPost]
            public ActionResult Edit(Contact contactToEdit)
            {
                ValidationContat(contactToEdit);
                if (!ModelState.IsValid)
                    return View();
     
                try
                {
                    var originalContact = (from c in _entities.ContactDataSet
                                           where c.Id == contactToEdit.Id
                                           select c).FirstOrDefault();
                    _entities.ApplyPropertyChanges(originalContact.EntityKey.EntitySetName, contactToEdit);
                    _entities.SaveChanges();
                    return RedirectToAction("Index");
     
                }
                catch
                {
                    return View();
                }
            }
     
            //
            // GET: /Home/Delete/5
     
            public ActionResult Delete(int id)
            {
                var contactToDelete = (from c in _entities.ContactDataSet 
                                       where c.Id == id
                                       select c).FirstOrDefault();
     
                return View(contactToDelete);
     
            }
     
            //
            // POST: /Home/Delete/5
     
            [HttpPost]
            public ActionResult Delete(Contact contactToDelete)
            {
                try
                {
                    var originalContact = (from c in _entities.ContactDataSet
                                           where c.Id == contactToDelete.Id
                                           select c).FirstOrDefault();
     
                    _entities.DeleteObject(originalContact);
                    _entities.SaveChanges();
                    return RedirectToAction("Index");
     
                }
                catch
                {
                    return View();
                }
            }
        }
    }
    Views : Create.aspx

    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
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    <%@ Page Title="" Language="C#" MasterPageFile="~/Views/Shared/Site.Master" Inherits="System.Web.Mvc.ViewPage<ContactManager.Models.Contact>" %>
     
    <asp:Content ID="Content1" ContentPlaceHolderID="TitleContent" runat="server">
    	Create
    </asp:Content>
     
    <asp:Content ID="Content2" ContentPlaceHolderID="MainContent" runat="server">
     
        <h2>Create</h2>
        <%= Html.ValidationSummary() %>
        <% using (Html.BeginForm()) {%>
     
     
            <fieldset>
                <legend>Fields</legend>
     
                <div class="editor-label">
                    <%= Html.LabelFor(model => model.Nom) %>
                </div>
                <div class="editor-field">
                    <%= Html.TextBoxFor(Model=>Model.Nom) %> 
                    <%= Html.ValidationMessageFor(model => model.Nom,"*") %>                               
                </div>
     
                <div class="editor-label">
                    <%= Html.LabelFor(model => model.Prenom) %>
                </div>
                <div class="editor-field">
                    <%= Html.TextBoxFor(model => model.Prenom) %>
                    <%= Html.ValidationMessageFor(model => model.Prenom) %>
                    <%=Html.ValidationMessage("Prenom", "*")%>
                </div>
     
                <div class="editor-label">
                    <%= Html.LabelFor(model => model.Phone) %>
                </div>
                <div class="editor-field">
                    <%= Html.TextBoxFor(model => model.Phone) %>
                    <%= Html.ValidationMessageFor(model => model.Phone) %>
                    <%= Html.ValidationMessage("Phone", "*")%>
                </div>
     
                <div class="editor-label">
                    <%= Html.LabelFor(model => model.Email) %>
                </div>
                <div class="editor-field">
                    <%= Html.TextBoxFor(model => model.Email) %>
                    <%= Html.ValidationMessageFor(model => model.Email) %>
                    <%=Html.ValidationMessage("Email","*") %>
                </div>
     
                <p>
                    <input type="submit" value="Create" />
                </p>
            </fieldset>
     
        <% } %>
     
        <div>
            <%= Html.ActionLink("Back to List", "Index") %>
        </div>
     
    </asp:Content>
    mais en cours de test si je laisse les champs vide pour trouver les erreur je obtenue l'erreur
    La référence d'objet n'est pas définie à une instance d'un objet.
    Erreur du serveur dans l'application '/'.
    La référence d'objet n'est pas définie à une instance d'un objet.
    Description : Une exception non gérée s'est produite au moment de l'exécution de la demande Web actuelle. Contrôlez la trace de la pile pour plus d'informations sur l'erreur et son origine dans le code.

    Détails de l'exception: System.NullReferenceException: La référence d'objet n'est pas définie à une instance d'un objet.

    Erreur source:

    Ligne 14 : protected void ValidationContat(Contact contactToValidet)
    Ligne 15 : {
    Ligne 16 : if (contactToValidet.Nom.Trim().Length == 0)
    Ligne 17 : ModelState.AddModelError(string.Empty, "First name is required.");
    Ligne 18 : if (contactToValidet.Prenom.Trim().Length == 0)

    Si je remplie le formulaire pas de message d'erreur.
    Comment je peux résoudre ce problème ?

    Merci de m'aider.

  2. #2
    Inactif  
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Janvier 2007
    Messages
    6 604
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC

    Informations forums :
    Inscription : Janvier 2007
    Messages : 6 604
    Points : 13 314
    Points
    13 314
    Par défaut
    Citation Envoyé par B.M.W83 Voir le message
    Comment je peux résoudre ce problème ?
    En exécutant pas à pas avec le debugger.

    Je ne réponds pas aux questions techniques par MP ! Le forum est là pour ça...


    Une réponse vous a aidé ? utiliser le bouton

    "L’ennui dans ce monde, c’est que les idiots sont sûrs d’eux et les gens sensés pleins de doutes". B. Russel

  3. #3
    Membre du Club
    Inscrit en
    Octobre 2009
    Messages
    95
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Octobre 2009
    Messages : 95
    Points : 57
    Points
    57
    Par défaut
    Citation Envoyé par Bluedeep Voir le message
    En exécutant pas à pas avec le debugger.
    Salut
    Si j'exécute pas à pas avec le debugger. dans cette partie la

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    protected void ValidationContat(Contact contactToValidet)
            {
                if (contactToValidet.Nom.Trim().Length == 0)
                    ModelState.AddModelError(string.Empty, "First name is required.");
                if (contactToValidet.Prenom.Trim().Length == 0)
                    ModelState.AddModelError(string.Empty, "Last name is required.");
                if (contactToValidet.Phone.Trim().Length > 0 && !Regex.IsMatch(contactToValidet.Phone, @"((\(\d{3}\) ?)|(\d{3}-))?\d{3}-\d{4}"))
                    ModelState.AddModelError(string.Empty, "Mail non valid");
                if (contactToValidet.Email.Trim().Length > 0 && !Regex.IsMatch(contactToValidet.Email, @"^[\w-\.]+@([\w-]+\.)+[\w-]{2,4}$"))
                    ModelState.AddModelError(string.Empty, "Mail non valid");
     
            }

    lorsque je remplie le formulaire pas de problème. le problème lorsque l'un des champs reste vide

    voila la photo de message d'erreur qu'il s'affiche (dans le pièce jointes).

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
     
     
     
     
     
    [IMG]http://www.developpez.net/forums/attachment.php?attachmentid=68201&stc=1&d=1286897578[/IMG]

    j'espère que j'ai expliqué bien le problème

  4. #4
    Membre du Club
    Inscrit en
    Juillet 2010
    Messages
    51
    Détails du profil
    Informations forums :
    Inscription : Juillet 2010
    Messages : 51
    Points : 55
    Points
    55
    Par défaut
    a la place de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if (contactToValidet.Nom.Trim().Length == 0)
    met :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if (contactToValidet.Nom is nothing)

  5. #5
    Membre du Club
    Inscrit en
    Octobre 2009
    Messages
    95
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Octobre 2009
    Messages : 95
    Points : 57
    Points
    57
    Par défaut
    Citation Envoyé par tronzo Voir le message
    a la place de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if (contactToValidet.Nom.Trim().Length == 0)
    met :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if (contactToValidet.Nom is nothing)
    développement d’une application de gestion de contacts avec ASP.NET MVC (C#)
    nothing avec VB.net et moi j'utilise C#.net

  6. #6
    Expert éminent sénior

    Avatar de Philippe Vialatte
    Homme Profil pro
    Architecte technique
    Inscrit en
    Juillet 2004
    Messages
    3 029
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Juillet 2004
    Messages : 3 029
    Points : 12 465
    Points
    12 465
    Par défaut
    C# ou VB, de toute façon, pour tester une chaine vide, c'est string.IsNullOrEmpty

    Et encore mieux, en 4.0, IsNullOrWhiteSpace

    Et si tu es en 3.5:
    public static bool IsNullOrWhiteSpace(string value)
    {
    if (String.IsNullOrEmpty(value))
    {
    return true;
    }

    return String.IsNullOrEmpty(value.Trim());
    }

    Mon Blog

    The Cake is still a lie !!!



    Vous voulez contribuer à la rubrique .NET ? Contactez-moi par MP.
    Vous voulez rédiger des articles pour la rubrique .NET ? Voici la procédure à suivre.

Discussions similaires

  1. validation du formulaire de la page ouvrante d'un popup
    Par noa dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 10/08/2005, 12h11
  2. Réponses: 5
    Dernier message: 24/05/2005, 11h21
  3. Valider un formulaire contenu dans une iframe
    Par snoopy5.0 dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 28/04/2005, 11h14
  4. Valider un formulaire par une image
    Par Fleep dans le forum Balisage (X)HTML et validation W3C
    Réponses: 4
    Dernier message: 31/10/2004, 01h50
  5. [Struts]Validation de formulaire
    Par djoukit dans le forum Struts 1
    Réponses: 4
    Dernier message: 12/03/2004, 09h12

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