0
私は自分のビューモデルを検証する方法について疑問に思っています。メソッドがサービスレイヤから返すもの
ユーザーはチームを1つしか所有できないため、チームに1つもない場合は何らかの形でチェックする必要があります。
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回取得する必要があります。何が役に立たないようです。
オクラホマ例えば、PARAMを捨てることにより、ビジネス層からエラーを報告することができます。答えをありがとう、それは良い練習ですか? – pred
はい、サービスコードが複数の場所(Web + APIなど)から使用される場合。私はそれがよりエレガントだと思うし、例外をスローし、後でそれをキャッチします。 – Nigrimmist