Я думаю, что мне здесь не хватает чего-то фундаментального, но я копаю более двух часов и, должно быть, просто упускаю из виду очевидное.Если это так, я прошу прощения.
У меня есть сайт MVC 3, и у меня есть сервисный уровень, с которым общаются мои контроллеры, и хранилище, с которым общается мой сервисный уровень (все отделены с помощью контейнера IoC, но этоне имеет значения здесь).Моими моделями доменов являются объекты EF4, совместно используемые контроллером, службами и репозиториями.
У меня есть модель представления для регистрации, которая выглядит примерно так:
public class SignupViewModel
{
[DisplayName("Email")]
[Required, RegularExpression(@"^.+@.+\..+$")]
public string Email { get; set; }
[DisplayName("Password")]
[Required]
public string Password { get; set; }
[DisplayName("Confirm password")]
[Required, Compare("Password")]
public string PasswordConfirmation { get; set; }
}
Модель моего домена пользователя выглядиткак-то так:
public class User
{
public int Id { get; set; }
public string Email { get; set; }
public string PasswordHash { get; set; }
public string PasswordSalt { get; set; }
}
У меня есть сервисный метод, который используется для регистрации пользователя, который выглядит примерно так:
public void Register(User user, string planTextPassword)
{
//Make sure the email address is not taken.
bool emailIsTaken = IsEmailTaken(user.Email);
if (emailIsTaken)
{
//What do I do here?
}
else
{
//Create the user.
}
}
И, наконец, действие моего контроллера, чтобы связать все этовместе:
public ActionResult Signup(SignupViewModel signupViewModel)
{
if (ModelState.IsValid)
{
_accountService.Register(Mapper.Map<SignupViewModel, User>(signupViewModel), signupViewModel.Password);
_unitOfWork.Commit();
}
return View(signupViewModel);
}
Как вы можете видеть в комментарии в моем методе обслуживания, что мне делать, если проверка уровня обслуживания не проходит?Как обсуждалось в этом вопросе , я не должен бросать исключения.Но я не уверен, что следую тому, что предлагает Райан, или даже если это все еще применимо (т.е. есть ли лучшие способы справиться с этим сейчас с помощью MVC 3 или других инструментов, доступных сейчас, например, Fluent Validation).
НравитсяЯ сказал, я думаю, что на данный момент я просто не вижу леса за деревьями, но, потратив последние два-три часа, пытаясь выяснить это самостоятельно, я подумал, что мне повезет больше, если я задам вопрос.
Заранее спасибо.