Je débute en .NET et MVC. Je suis stagiaire et sur une application écrite en c# je voudrais ajouter une fonctionnalité de modification des données d'un compte client sachant que le formulaire de création existe déjà. J'ai noté que systématiquement la validation de la vue fait appel au constructeur du modèle avant même d'appeler l'action du contrôleur '(ValidationCompte(). Hors dans mon cas l'appel du constructeur provoque la création systématique d'un nouveau compte client. Ce qui ne me convient pas pour une modification de compte
Est-il possible d'éviter cet appel du constructeur ou alors est-il possible, à partir de la vue, de passer de passer un paramètre au modèle afin de spécifier si l'on est en mode Création ou Modification ?
Pour illustrer, voici l'exemple de code simplifié

La VUE
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
 
@model GAT.WEB.Biz.Process.Models.ClientMVC
@{
    ViewBag.Title = "Compte";
    ViewBag.idPage = "Compte";
    Layout = "/Views/Shared/_PageVente.cshtml";
}
<script src="@Url.Content("/Scripts/jquery.validate.min.js")" type="text/javascript"></script>
<script src="@Url.Content("/Scripts/jquery.validate.unobtrusive.min.js")" type="text/javascript"></script>
 
@using (Html.BeginForm("ValidationCompte", "Compte", null, FormMethod.Post, new { data_transition = "slide" }))
{
 
    @Html.ValidationSummary(true, ViewRes.Compte.Textes.AttentionErreursSuivantes)
    <div class="InformationsCompte">
        <fieldset>
            <legend>@ViewRes.Compte.Textes.Identifiants</legend>
                <div class="Email">
                    @Html.LabelFor(m => m.Email, ViewRes.Compte.Textes.info_compte_Email)
                    @Html.EditorFor(m => m.Email)
                    @Html.ValidationMessageFor(m => m.Email)
                </div>
                <div class="Mdp">
                    @Html.LabelFor(m => m.Mdp, ViewRes.Compte.Textes.info_Mdp)
                    @Html.EditorFor(m => m.Mdp)
                    @Html.ValidationMessageFor(m => m.Mdp)
                </div>
        </fieldset>
    </div>
    @Html.AntiForgeryToken()
    <input type="submit" value="@ViewRes.Compte.Textes.ValiderCompte" class="ValiderCompte" data-transition = "slide" data-icon = "arrow-r" data-iconpos = "right"/>
}
Le MODELE
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
 
namespace Models
{
    public class ClientMVC
    {
        public Client Client;
 
        public ClientMVC()
        {
            Client = Clients.GetNewDirect();
            Client.TypeClient = EnumGAT.TypeClient.Individuel;
            Client.DateCreation = DateHeure.Maintenant();
            Client.Validate();
        }
 
        public string Email
        {
            get
            {
                return Client.email;
            }
            set
            {
                Client.email = value;
            }
        }
        public string Mdp
        {
            get
            {
                return new DataCrypt().Decrypter(Client.motpasse);
            }
            set
            {
                Client.motpasse = new DataCrypt().Crypter(value);
            }
        }
    }
}
Le CONTROLEUR
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
 
public ActionResult ValidationCompte(ClientMVC ClientMVC)
{
    if (ModelState.IsValid)
    {
        ClientMVC.Client.DateModification = DateHeure.Maintenant();
        ClientMVC.Client.Validate();
    }
    return RedirectToAction("Identification", "Compte");
}