Kha*_*uez 5 .net c# validation fluent
在前几天寻找完全不同的东西时,我偶然发现了两个用于在.NET中进行Fluent验证的库.这个概念看起来很有趣,因为到目前为止,我正在使用通常的条件语句和分支语句(if,else,case等)进行验证.
特别是,它可以相对容易地链接一些条件,这些条件可能导致某些情况下复杂条件的较短代码,并为同一对象中的每个违规嵌入若干错误消息.
也就是说,是不是也让代码看起来比C#通常更冗长,有时候有点像T-SQL ......并且这不会导致代码具有不一致的外观和感觉?
简而言之,您如何看待Fluent Validation,如果您喜欢它,您认为哪个库最适合它?到目前为止,我已经看过http://tnvalidate.codeplex.com/和http://fluentvalidation.codeplex.com/,乍一看似乎或多或少等同......
谢谢.
我正在使用我在这里发布的自己的验证库。
您建议的两者的区别在于验证被放入单独的验证类中。您可以创建并忘记验证类,它们会被验证库自动发现。
public class MyModelValidator : FluentValidator<MyModel>
{
public MyModelValidator()
{
Property("FirstName").Required();
Property("LastName").Required().Min(15);
}
}
Run Code Online (Sandbox Code Playgroud)
使用您自己喜欢的本地化库(例如字符串表)也可以轻松添加对本地化的支持
public class StringTableProvider : ILanguagePrompts
{
public string this[string modelName, string propertyName]
{
get { return Get(modelName, propertyName) ?? "[" + propertyName+ "]"; }
}
public string Get(string modelName, string propertyName)
{
return Resource1.ResourceManager.GetString(modelName + "_" + propertyName);
}
}
Run Code Online (Sandbox Code Playgroud)
并配置:
Validator.LanguageHandler = new StringTableProvider();
Run Code Online (Sandbox Code Playgroud)
实际的验证是这样完成的:
User user = new User();
user.FirstName = "Jonas";
var errors = Validator.Validate(user);
if (errors.Count > 0)
{
// Handle the errors in any way you like.
// both property names (localized and actual property name) and localized error message is accessible.
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5456 次 |
| 最近记录: |