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
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
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(); } } } }
mais en cours de test si je laisse les champs vide pour trouver les erreur je obtenue l'erreur
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>
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.
Partager