Domanda

Per un oggetto utente nel mio progetto mvc asp.net, ho scritto una modelbinder personalizzato per verificare se le password sono validi e se due password corrispondenti sono stati iscritti etc ..

Il nome di login deve essere unico, però, mi chiedevo se posso verificare la presenza che nel modelbinder, o si tratta considerato cattiva pratica?

Il fatto è che il legante è chiamato prima di arrivare anche al controllore, quindi vorrei avere due istanze di mio DataContext galleggianti intorno e connessioni dunque più al database, Credo che avrei potuto istituire una fabbrica di sorta per quella .

Questo è un frammento di codice di quello che faccio ora nel controllore:

// 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 }
}
È stato utile?

Soluzione

Non vorrei cercare la disponibilità nome utente nel modello di legante. Credo che sia compito del metodo di CreateUser di farlo in questo caso.

Quindi, l'azione sarebbe come questo:

// 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)
}
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top