サービスレイヤークラス(WebフロントエンドやWeb APIなどで使用されることになっている)を作成するための基本的なアーキテクチャガイドラインを含むコードサンプルを提供できますか?
これは良いチュートリアルだと思いますか?http://www.asp.net/mvc/tutorials/older-versions/models-(data)/validating-with-a-service-layer-cs
サービスレイヤークラス(WebフロントエンドやWeb APIなどで使用されることになっている)を作成するための基本的なアーキテクチャガイドラインを含むコードサンプルを提供できますか?
これは良いチュートリアルだと思いますか?http://www.asp.net/mvc/tutorials/older-versions/models-(data)/validating-with-a-service-layer-cs
個人的には、その記事でエラーをサービス層からコントローラーに (IValidationDictionary を使用して) 渡す方法が説明されているのが好きではありません。代わりに、次のように動作させます。
[Authorize]
public class AccountController : Controller
{
private readonly IMembershipService membershipService;
// service initialization is handled by IoC container
public AccountController(IMembershipService membershipService)
{
this.membershipService = membershipService;
}
// .. some other stuff ..
[AllowAnonymous, HttpPost]
public ActionResult Register(RegisterModel model)
{
if (this.ModelSteate.IsValid)
{
var result = this.membershipService.CreateUser(
model.UserName, model.Password, model.Email, isApproved: true
);
if (result.Success)
{
FormsAuthentication.SetAuthCookie(
model.UserName, createPersistentCookie: false
);
return this.RedirectToAction("Index", "Home");
}
result.Errors.CopyTo(this.ModelState);
}
return this.View();
}
}
または..ミカライが述べたように、サービスに検証例外をスローさせ、それらをグローバルフィルターでキャッチし、モデル状態に挿入します。