2016-12-04 78 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

你可以扔掉PARAM报告从业务层的错误,例如

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

确定。谢谢你的回答,但这是一个好习惯吗? – pred

+0

是的,如果你的服务代码从两处或两处以上(网络+ API为例)一起使用。我认为它更优雅,然后抛出异常并在以后捕获它们。 – Nigrimmist