验证视图模型的接口

时间:2012-12-03 16:41:06

标签: asp.net-mvc

我想知道是否有任何类似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:我不想使用数据注释!

1 个答案:

答案 0 :(得分:1)

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

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

流利验证页面 http://fluentvalidation.codeplex.com/

流利验证来源(如果您需要) https://github.com/JeremySkinner/FluentValidation

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

执行此操作时,当您调用帖子操作ModelState.IsValid时,它将使用您为ViewModel设置的流畅验证类进行验证。

您还可以与Unity,Ninject,StructureMap等控件反转集成......在保存之前检查存储库中的一些信息。