C# 比较属性数据注释不起作用
手动验证对象时,“比较”属性无法工作。我制作了一个简单的测试控制台应用程序,它也不工作。我做错什么了吗 我使用最新版本的.Net Framework 4.5.1。 我制作这个控制台测试应用程序是因为它在我的MVC应用程序中也不起作用,该应用程序在业务层(单独的类库)中执行DataAnnotation 谢谢 要测试的类:C# 比较属性数据注释不起作用,c#,asp.net-mvc,data-annotations,C#,Asp.net Mvc,Data Annotations,手动验证对象时,“比较”属性无法工作。我制作了一个简单的测试控制台应用程序,它也不工作。我做错什么了吗 我使用最新版本的.Net Framework 4.5.1。 我制作这个控制台测试应用程序是因为它在我的MVC应用程序中也不起作用,该应用程序在业务层(单独的类库)中执行DataAnnotation 谢谢 要测试的类: public class Change // : IValidatableObject { /// <summary> /// The current
public class Change // : IValidatableObject
{
/// <summary>
/// The current password of this account.
/// </summary>
[Required(ErrorMessage = "Huidig wachtwoord is verplicht")]
[DataType(DataType.Password)]
public string CurrentPassword { get; set; }
/// <summary>
/// The new password for the logged in user account.
/// </summary>
[Required(ErrorMessage = "Wachtwoord is verplicht")]
[DataType(DataType.Password)]
public string NewPassword { get; set; }
/// <summary>
/// This must be the same as <see cref="NewPassword"/>.
/// </summary>
[Required(ErrorMessage = "Bevestig wachtwoord is verplicht")]
[Compare("NewPassword")]
[DataType(DataType.Password)]
public string NewPassword2 { get; set; }
//public IEnumerable<ValidationResult> Validate(ValidationContext validationContext)
//{
// return new List<ValidationResult>();
//}
}
添加IValidatableObject
也不起作用。试试这个
private List<ValidationResult> ValidateModel(object model)
{
var validationResults = new List<ValidationResult>();
var ctx = new ValidationContext(model, null, null);
Validator.TryValidateObject(model, ctx, validationResults, true);
return validationResults;
}
私有列表验证模型(对象模型)
{
var validationResults=新列表();
var ctx=新的ValidationContext(model,null,null);
TryValidateObject(model,ctx,validationResults,true);
返回验证结果;
}
试试这个
private List<ValidationResult> ValidateModel(object model)
{
var validationResults = new List<ValidationResult>();
var ctx = new ValidationContext(model, null, null);
Validator.TryValidateObject(model, ctx, validationResults, true);
return validationResults;
}
私有列表验证模型(对象模型)
{
var validationResults=新列表();
var ctx=新的ValidationContext(model,null,null);
TryValidateObject(model,ctx,validationResults,true);
返回验证结果;
}
试试这个
private List<ValidationResult> ValidateModel(object model)
{
var validationResults = new List<ValidationResult>();
var ctx = new ValidationContext(model, null, null);
Validator.TryValidateObject(model, ctx, validationResults, true);
return validationResults;
}
私有列表验证模型(对象模型)
{
var validationResults=新列表();
var ctx=新的ValidationContext(model,null,null);
TryValidateObject(model,ctx,validationResults,true);
返回验证结果;
}
试试这个
private List<ValidationResult> ValidateModel(object model)
{
var validationResults = new List<ValidationResult>();
var ctx = new ValidationContext(model, null, null);
Validator.TryValidateObject(model, ctx, validationResults, true);
return validationResults;
}
私有列表验证模型(对象模型)
{
var validationResults=新列表();
var ctx=新的ValidationContext(model,null,null);
TryValidateObject(model,ctx,validationResults,true);
返回验证结果;
}
尝试使用另一个重载的Validator.ValidateObject
,该重载使用Boolean
参数来验证所有属性:
public static void ValidateObject(
Object instance,
ValidationContext validationContext,
bool validateAllProperties
)
参考:
例如:
try
{
Validator.ValidateObject(change, new ValidationContext(change, null, null), true);
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
Console.ReadLine();
throw ex;
}
尝试使用另一个重载的
Validator.ValidateObject
,该重载使用布尔
参数来验证所有属性:
public static void ValidateObject(
Object instance,
ValidationContext validationContext,
bool validateAllProperties
)
参考:
例如:
try
{
Validator.ValidateObject(change, new ValidationContext(change, null, null), true);
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
Console.ReadLine();
throw ex;
}
尝试使用另一个重载的
Validator.ValidateObject
,该重载使用布尔
参数来验证所有属性:
public static void ValidateObject(
Object instance,
ValidationContext validationContext,
bool validateAllProperties
)
参考:
例如:
try
{
Validator.ValidateObject(change, new ValidationContext(change, null, null), true);
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
Console.ReadLine();
throw ex;
}
尝试使用另一个重载的
Validator.ValidateObject
,该重载使用布尔
参数来验证所有属性:
public static void ValidateObject(
Object instance,
ValidationContext validationContext,
bool validateAllProperties
)
参考:
例如:
try
{
Validator.ValidateObject(change, new ValidationContext(change, null, null), true);
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
Console.ReadLine();
throw ex;
}
调用Validator.ValidateObject(change,newvalidationcontext(change),true)对我有效,布尔值告诉验证器验证所有属性 调用Validator.ValidateObject(change,new ValidationContext(change),true)对我有效,布尔值告诉验证器验证所有属性 调用Validator.ValidateObject(change,new ValidationContext(change),true)对我有效,布尔值告诉验证器验证所有属性 调用Validator.ValidateObject(change,new ValidationContext(change),true)对我有效,布尔值告诉验证器验证所有属性 我确实在Compare属性中发现了另一个bug,这个bug目前还没有在NuGet软件包中发布。我确实在Compare属性中发现了另一个bug,这个bug目前还没有在NuGet软件包中发布。我确实在Compare属性中发现了另一个bug,这个bug目前还没有在NuGet软件包中发布。我确实在Compare属性中发现了另一个bug,这个bug目前还没有在NuGet软件包中发布。你能告诉我真相是什么吗?为什么必需的属性在没有使用true重载的情况下工作而不使用compare呢?哦,我在MSDN上的TryValidate文档中看到,如果不使用true重载,只有必需的属性才有效。你能告诉我true的作用吗?为什么必需的属性在没有使用true重载的情况下工作而不使用compare呢?哦,我在MSDN上的TryValidate文档中看到,如果不使用true重载,只有必需的属性才有效。你能告诉我true的作用吗?为什么必需的属性在没有使用true重载的情况下工作而不使用compare呢?哦,我在MSDN上的TryValidate文档中看到,如果不使用true重载,只有必需的属性才有效。你能告诉我true的作用吗?为什么必需的属性在没有使用true重载和compare not重载的情况下工作?哦,我在MSDN上的TryValidate文档中看到,如果不使用true重载,则只验证必需的属性