0

IValidatableObjectのようなインターフェイスがあるかどうかを知りたいのですが、ModelStateの入力をテストするには、次のようにします。

public class EditUserViewModel: IAnyInterface
{
     public string Name{get;set;}
     public string Age{get;set;}

     public IEnumerable<ModelStateError> Validate()
     {
          if(//something)
               yield new ModelStateError("error");
     }
}

ps:データ注釈を使いたくない!

4

1 に答える 1

1

はい、これを行うことはできますが、ModelStateすべてのプロパティが有効かどうかを確認し、ビューに送信するために変換するためのラッパーを作成する必要があります。

と呼ばれるライブラリを使用できますFluent Validation。ViewModelを検証するために、無料でasp.netmvcおよび拡張可能なライブラリと簡単に統合できます。見てください:

FluentValidationページ http://fluentvalidation.codeplex.com/

Fluent検証ソース(必要な場合) https://github.com/JeremySkinner/FluentValidation

ASP.NET MVC統合: http ://fluentvalidation.codeplex.com/wikipage?title = mvc&referringTitle = Documentation

これを行うと、投稿アクションを呼び出すとModelState.IsValid、ViewModelに設定した流暢な検証クラスで検証されます。

Unity、Ninject、StructureMapなどの制御の反転と統合して、リポジトリを永続化する前にリポジトリの情報を確認することもできます。

于 2012-12-03T17:00:32.053 に答える