0

I would like to know if is there any interface like IValidatableObject but for test the inputs for ModelState, something like that:

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: I don't want to use data annotation!

4

1 回答 1

1

是的,您可以这样做,但是您需要为您创建一个包装器ModelState来检查每个属性是否有效并转换为发送到视图。

您可以使用一个名为Fluent Validation. 它是免费的,易于与 asp.net mvc 和可扩展库集成以验证您的 ViewModel。看一看:

Fluent 验证页面 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 回答