Frage

Für ein Benutzerobjekt in meinem asp.net MVC-Projekt habe ich einen benutzerdefinierten Modelbinder geschrieben zu überprüfen, ob Passwörter gültig sind und ob zwei passenden Passwörter eingegeben wurden etc ..

Der Login-Name obwohl eindeutig sein muss, ich habe mich gefragt, ob ich für das in der Modelbinder zu überprüfen, oder ist dies schlechte Praxis in Betracht gezogen?

Die Sache ist die, dass das Bindemittel genannt wird, bevor man überhaupt an den Controller bekommen, so würde ich zwei Instanzen von meinen Datacontext hat im Umlauf und damit mehr Verbindungen zu der Datenbank, ich denke, ich eine Fabrik der Art für das einrichten könnte .

Dies ist ein Code-Schnipsel von dem, was ich in der Steuerung jetzt tun:

// 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 }
}
War es hilfreich?

Lösung

Ich würde die Benutzername Verfügbarkeit im Modell Binder nicht überprüfen. Ich denke, es ist die Aufgabe der CreateUser Methode, dass in diesem Fall zu tun ist.

So ist die Aktion so sein würde:

// 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)
}
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top