【发布时间】:2010-09-01 13:46:10
【问题描述】:
我一直在阅读数据注释(即Scott Guthrie's blog post),我对在一个地方拥有验证逻辑的概念感到非常兴奋。
在提示用户输入与给定类关联的属性子集时,是否有人能够成功使用此技术?
例如(伪代码)...
public class Person
{
[Required]
public string Name
[Required]
public string Email
}
然后假设您有一个仅显示带有名称的表单的视图。该视图的 HttpPost 控制器中 ModelState.IsValid 的值将始终为 false,因为 Email 是必需的并且缺少。
我曾考虑使用单独的模型,一个用于仅需要名称的部分,另一个用于需要名称和电子邮件的部分,但是我违反了 DRY 原则,因为我将进行名称验证逻辑在两个地方。
有什么建议吗?可以让数据注释以这种方式工作吗?我应该只是有两个单独的课程吗?也许CustomValidationAttribute 在确定是否需要电子邮件之前检查标志?
【问题讨论】:
-
我不是一个为自己的答案而自豪的人,但我看到史蒂夫桑德森在blog.stevensanderson.com/2010/02/19/… 解决了这个问题 - 如果有人想阅读并发布答案...... :)
-
默认的 MVC 1 行为被更改是有充分理由的。我会非常非常小心史蒂夫的解决方案。
标签: .net asp.net-mvc validation data-annotations