2009-04-28 8 views
1

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 ..personnalisée IModelBinder et base de données d'accès

Les besoins de nom de connexion Pour être unique cependant, je me demandais si je pouvais vérifier cela dans le modelbinder, ou est-ce considéré comme une mauvaise pratique? Le fait est que le classeur est appelé avant même d'arriver au contrôleur, donc j'ai deux instances de mon dataContext flottant autour et donc plusieurs connexions à la base de données, je suppose que je pourrais mettre en place une usine de sortes pour cette.

C'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 } 
} 

Répondre

1

Je ne vérifierait 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.

Donc, 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) 
} 
+0

Ceci est similaire à ce que je faisais donc je suppose que c'est la bonne façon de faire! – Morph

Questions connexes