2016-12-04 4 views
0

Мне просто интересно, как проверить мою модель просмотра.Что должен возвращать метод из уровня обслуживания

Пользователь может владеть только одной командой, поэтому мне нужно как-то проверить его, если у него его нет.

public ActionResult AddTeam(TeamCreatingViewModel teamToAdd) 
    { 
     if (ModelState.IsValid) 
     { 
      //check if the user has got a team 
      if (!TeamService.checkIfUserHasCreatedTeam(User.Identity.GetUserId())) 
      { 
       //if not then allow him to create one 
       if (!TeamService.addTeam(teamToAdd, User.Identity.GetUserId())) 
       { 
        ViewBag.Info = "Success"; 
        return View("Info"); 
       } 
       else 
       { 
        ViewBag.Info = "It was impossible to create a new team"; 
        return View("Error"); 
       } 
      } 
      else 
      { 
       ViewBag.info = "You have a team!"; 
       return View("Error"); 
      } 
     } 
     else 
     { 
      return View("TeamCreatingForm", teamToAdd); 
     } 
    } 

Или будет ли решение ниже лучше?

public ActionResult AddTeam(TeamCreatingViewModel teamToAdd) 
    { 
     if (ModelState.IsValid) 
     { 
      if (!TeamService.addTeam(teamToAdd, User.Identity.GetUserId())) //<--- now it is checking and adding (if allowed) 
      { 
       ViewBag.Info = "Success"; 
       return View("Info"); 
      } 
      else 
      { 
       ViewBag.Info = "It was impossible to create a new team"; 
       return View("Error"); 
      } 
     } 
     else 
     { 
      return View("TeamCreatingForm", teamToAdd); 
     } 
    } 

Как я могу сообщить (из уровня обслуживания), если произошла ошибка (и какие)? Во втором случае пользователи ничего не знают о том, что было сделано неправильно. И в первом случае я должен получить объект объекта 2 раза, что кажется бесполезным.

ответ

0

Вы можете сообщить об ошибках из бизнес-слоя выбросить из параметров, например

public bool AddItem(string name, out List<string> errors){...}// or just string with error 
+0

Ok. Спасибо за ответ, но это хорошая практика? – pred

+0

Да, если ваш код обслуживания будет использоваться из двух или нескольких мест (например, web + api). Я думаю, что это более элегантно, чем бросать исключения и ловить их позже. – Nigrimmist

Смежные вопросы