Pergunta

Para um objeto de usuário no meu projeto MVC asp.net, eu escrevi um ModelBinder personalizado para verificar se as senhas são válidos e se duas senhas correspondentes foram inseridos etc ..

O nome de login precisa ser embora única, eu queria saber se eu posso verificar que no ModelBinder, ou isso é má prática considerada?

A coisa é que o ligante é chamado antes mesmo de chegar ao controlador, por isso gostaria de ter duas instâncias do meu DataContext flutuando e, assim, múltiplas conexões para o banco de dados, eu acho que eu poderia montar uma fábrica das sortes para que .

Este é um trecho de código do que eu faço agora no controlador:

// 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 }
}
Foi útil?

Solução

Eu não verificar a disponibilidade do nome de usuário no fichário de modelo. Eu acho que é o trabalho do método CreateUser fazer isso neste caso.

Assim, a ação seria assim:

// 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)
}
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top