Question

Pour un objet utilisateur dans mon asp.net projet mvc, j'ai écrit un ModelBinder personnalisé pour vérifier si les mots de passe sont valides et si deux mots de passe correspondant ont été saisis, etc ..

Le nom de connexion doit être unique si, je me demandais si je peux vérifier pour cela dans le ModelBinder, ou est-ce considéré comme une mauvaise pratique?

La chose est que le liant est appelé avant même au contrôleur, donc j'aurais deux instances de mes datacontext flottant autour et ainsi de multiples connexions à la base de données, je suppose que je pourrais mettre en place une usine de toutes sortes pour que .

Ceci est un extrait de code de ce que je fais maintenant dans le contrôleur:

// POST: /Users/Create
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult Create(Users user)
{            
    myDataContext db = new myDataContext();

    if (!ViewData.ModelState.IsValid)
    {                
        return View(user);
    }            

    Users testUser = db.Users.SingleOrDefault(p => p.LoginNaam == user.LoginNaam);
    if (testUser != null) { //Error stuff here }
}
Était-ce utile?

La solution

Je ne vérifie pas la disponibilité de nom d'utilisateur dans le classeur modèle. Je pense que c'est le travail de la méthode CreateUser de le faire dans ce cas.

Alors l'action serait comme ceci:

// POST: /Users/Create
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult Create(Users user)
{            
    myDataContext db = new myDataContext();

    if (!ViewData.ModelState.IsValid)
    {                
        return View(user);
    }

    try {
        db.CreateUser(User);
    }
    catch (ArgumentException e) {
        ModelState.AddModelError(e.ParamName, e.Message);
        return View(user);
    }
    return View("UserCreated", user)
}
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top