【发布时间】:2011-07-01 15:20:56
【问题描述】:
我有一个绑定到一个对象的数据表单,该对象的属性用System.ObjectModel.DataAnnotation 属性修饰以进行验证。
我面临的问题是这个类的一些属性只是有条件需要,不需要验证。例如,当应用的管理员决定编辑用户时, 他或她可以输入密码/密码确认/密码问题/密码答案。或者他/她可能会完全跳过这些属性。
因此,如果管理员决定输入这 4 个字段中的任何一个,它们都必须存在,并且必须应用所有这些字段的验证规则。但是,如果管理员只想更改 FirstName、LastName、Email 或任何其他任意属性 - 不需要验证与密码相关的字段。
有没有办法将它们从验证过程中“排除”?
这是我使用的对象的示例:
public class RegistrationData
{
public string FirstName { get; set; }
public string LastName { get; set; }
public string Email { get; set; }
public string Username { get; set; }
public string Password { get; set; }
public string PasswordConfirm { get; set; }
public string PasswordQuestion { get; set; }
public string PasswordAnswer { get; set; }
}
我在 Xaml 中有一个名为 registrationForm 的 DataForm,而我得到的错误在此代码中:
private void RegistrationButton_Click(object sender, RoutedEventArgs e)
{
if( this.registerForm.ValidateItem() )
{
//Does not pass validaton if the password properties are not filled in.
}
}
关于如何解决它的任何想法?
我正在考虑使用两个 DataForms...并将用户对象一分为二,但这涉及大量代码...
【问题讨论】:
-
请问您是如何进行验证的?更准确地说,您是否使用任何预定义的接口进行错误通知?我问是因为您似乎没有为此使用注册数据类,所以它发生在哪里?
-
你使用的只是数据注解吗?
-
@Stainedart:是的,我们使用 Silverlight DataForm 和注释属性。对于新用户,我想输入密码,当我编辑用户时,密码字段不应该被验证。在我的情况下,我会很高兴有一个解决方案只是禁用验证。
-
@slfan 如果您使用与数据注释不同的方式查看我在下面的答案,您将获得所需的验证灵活性。
标签: silverlight silverlight-4.0 silverlight-toolkit dataform validation