【发布时间】:2017-11-07 04:32:07
【问题描述】:
我正在开发一个网站,只是想了解一下总体结构。我在后台有一个使用“存储库模式”访问的数据库。我的 UserRepository 类中有以下代码:
public bool IsValid(User user)
{
if (_context.Users.Any(c => c.EmailAddress == user.EmailAddress))
{
Message = "Email address already in use";
return false;
}
return true;
}
这是在这里实现的
[HttpPost]
[AllowAnonymous]
[ValidateAntiForgeryToken]
public ActionResult Register(User user)
{
if (ModelState.IsValid)
{
var context = new Context("DatabaseContext");
var userRepo = new UserRepository(context);
if (userRepo.IsValid(user))
{
userRepo.Add(user);
// return to different view
}
else
{
// display userRepo.Message on page
return View(user);
}
}
return View(user);
}
我的问题是我认为我没有正确地绕过“消息”位,但我在网上找不到任何帮助我的东西(特别是在存储库周围)。我认为我应该将 IsValid 的返回类型更改为类似结果的结果(正如我在对话框中看到的那样),但我又不确定。
任何帮助将不胜感激。
谢谢。
【问题讨论】:
-
现在,你有一个验证标准,所以 bool 是有意义的。如果事情变得更加复杂,请考虑在错误时返回消息(字符串),然后检查它是否为空(成功时)。或者,如果需要,您可以尽可能多地使用 ModelState 在控制器中所做的工作。
标签: c# asp.net model-view-controller repository-pattern