Dan*_* T. 11 c# validation asp.net-mvc poco
假设我有一个像这样的POCO:
public class Name
{
public string FirstName { get; set; }
public string LastName { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
FirstName和LastName不能为null.我应该添加这样的方法:
public List<Error> Validate()
{
var errors = new List<Error>();
if (String.IsNullOrEmpty(FirstName))
errors.Add(new Error("FirstName", "You must fill out first name."));
if (String.IsNullOrEmpty(LastName))
errors.Add(new Error("LastName", "You must fill out last name."));
}
Run Code Online (Sandbox Code Playgroud)
where Error是包含a的结构NameValueDictionary.这是一种很好的做事方式吗?我可能会发现存储库存在问题,有人试图保存此POCO而不先运行它Validate().
考虑使用面向方面的验证框架,例如xVal。
您不必将验证规则直接合并到代码中,您可以将它们添加为属性的属性,并卸载依赖项。你的类看起来像这样:
public class Name
{
[Required]
public string FirstName { get; set; }
[Required]
public string LastName { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
为了更直接地回答您的问题,向 POCO 添加验证规则是一种可行的简单方法,但维护起来可能会很繁琐,并且您需要在所有对象上强制执行 Validate 接口,这就是它的作用自己头疼。面向方面的解决方案是一种非常优雅的解决方案,可以解决这些问题和许多其他问题。
| 归档时间: |
|
| 查看次数: |
3139 次 |
| 最近记录: |