Overblog
Editer l'article Suivre ce blog Administration + Créer mon blog

Présentation

  • : Romagny13 - Du .NET,du pur .NET
  • : Cycle de progression Faire (quelque chose qui marche) -> comprendre ce que l’on fait/comment cela marche -> pousser plus loin les notions
  • Contact

Recherche

Articles RÉCents

12 février 2014 3 12 /02 /février /2014 12:26

    Pour l’ajout et la modification :

  • [AcceptVerbs(HttpVerbs.Post)]
  • Vérification selon les contraintes, null, utilisation des expressions régulières pour vérifier le format (http://regexlib.com)
  • Si l’entrée n’est pas correcte on ajoute une erreur au ModelState :           ModelState.AddModelError("propriété", "texte à afficher à l’utilisateur");
  • On vérifie que le model ne contient pas d’erreur pour l’ajout en base de données  ModelState.IsValid  

 

Ajout
Je crée une méthode ValidateClient
        [AcceptVerbs(HttpVerbs.Post)]
        [HttpPost]
        [ValidateAntiForgeryToken]
        public ActionResult Create(Client client)
        {
            ValidateClient(client);
 
            if (ModelState.IsValid)
            {
                db.Clients.Add(client);
                db.SaveChanges();
                return RedirectToAction("Index");
            }
 
            ViewBag.CategoryId = new SelectList(db.Categories, "Id", "Name", client.CategoryId);
            return View(client);
        }
        private void ValidateClient(Client client)
        {
            if (string.IsNullOrWhiteSpace(client.Name))
                ModelState.AddModelError("Name", "Nom requis.");
            if (!string.IsNullOrEmpty(client.Email))
                if (!Regex.IsMatch(client.Email, @"^[\w-\.]+@([\w-]+\.)+[\w-]{2,4}$"))
                    ModelState.AddModelError("Email", "Email non valide."); 
        }

 

Modification (c’est la même chose)
    [AcceptVerbs(HttpVerbs.Post)]
        [HttpPost]
        [ValidateAntiForgeryToken]
        public ActionResult Edit(Client client)
        {
            ValidateClient(client);
 
            if (ModelState.IsValid)
            {
                db.Entry(client).State = EntityState.Modified;
                db.SaveChanges();
                return RedirectToAction("Index");
            }
            ViewBag.CategoryId = new SelectList(db.Categories, "Id", "Name", client.CategoryId);
            return View(client);
        }

 

Il est également possible de définir le message à afficher dans la vue.
Exemple
@Html.ValidationMessage("Name", "Veuilez entrer votre nom. ")



Modifier le style des erreurs

Il est possible de modifier le style des erreurs affichées dans le fichier css
/* styles for validation helpers */
.field-validation-error {
    color: #e80c4d;
    font-weight: bold;
}
 
.field-validation-valid {
    display: none;
}
 
input.input-validation-error {
    border: 1px solid #e80c4d;
}
 
input[type="checkbox"].input-validation-error {
    border: 0 none;
}
 
.validation-summary-errors {
    color: #e80c4d;
    font-weight: bold;
    font-size: 1.1em;
}
 
.validation-summary-valid {
    display: none;
}
 
Si on veut ajouter un ValidationSummary à la page :
@Html.ValidationSummary()
Validation par attribut
Exemple dans la classe Client générée avec ADO.NET Entity Data Model
[Required(ErrorMessage = "Catégorie requise")]
public int CategoryId { get; set; }

     
da1          
       
Partager cet article
Repost0

commentaires