1

对于我的 asp.net mvc 项目中的用户对象,我编写了一个自定义模型绑定器来检查密码是否有效以及是否输入了两个匹配的密码等。

登录名需要是唯一的,我想知道我是否可以在模型绑定器中检查它,或者这被认为是不好的做法?

问题是在你到达控制器之前就调用了绑定器,所以我会有两个我的 dataContext 实例浮动,因此有多个到数据库的连接,我想我可以为此建立一个工厂。

这是我现在在控制器中所做的代码片段:

// 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 }
}
4

1 回答 1

1

我不会检查模型活页夹中的用户名可用性。我认为CreateUser在这种情况下,方法的工作就是这样做。

所以动作会是这样的:

// 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)
}
于 2009-04-28T14:29:31.780 回答