0

サービスレイヤークラス(WebフロントエンドやWeb APIなどで使用されることになっている)を作成するための基本的なアーキテクチャガイドラインを含むコードサンプルを提供できますか?

これは良いチュートリアルだと思いますか?http://www.asp.net/mvc/tutorials/older-versions/models-(data)/validating-with-a-service-layer-cs

4

1 に答える 1

4

個人的には、その記事でエラーをサービス層からコントローラーに (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();
    }
}

または..ミカライが述べたように、サービスに検証例外をスローさせ、それらをグローバルフィルターでキャッチし、モデル状態に挿入します。

于 2012-06-19T18:32:23.353 に答える