我在导入时使用以下模式" unknown"数据
public class MyCustomObject
{
public string MyCustomDateAsString { get; set; }
public DateTime? MyCustomDate
{
get
{
DateTime? returnValue = null;
DateTime parseResult = DateTime.MinValue;
bool parseAttempt = DateTime.TryParse(this.MyCustomDateAsString, out parseResult);
if (parseAttempt)
{
returnValue = parseResult;
}
return returnValue;
}
}
public string MyCustomIntAsString { get; set; }
public int? MyCustomInt
{
get
{
int? returnValue = null;
int parseResult = 0;
bool parseAttempt = int.TryParse(this.MyCustomIntAsString, out parseResult);
if (parseAttempt)
{
returnValue = parseResult;
}
return returnValue;
}
}
}
我有这个工作。
public class MyCustomObjectValidator : AbstractValidator<MyCustomObject>
{
public MyCustomObjectValidator()
{
RuleFor(custobj => custobj.MyCustomDateAsString).NotEmpty().WithMessage("Please specify a MyCustomDateAsString");
RuleFor(custobj => custobj.MyCustomIntAsString).NotEmpty().WithMessage("Please specify a MyCustomIntAsString");
}
}
我想添加这些规则。
RuleFor(custobj => custobj.MyCustomDate).NotNull().WithMessage("MyCustomDate must be a valid non null date. You specified '{0}'"); /* How can I put MyCustomDateAsString for the {0} */
RuleFor(custobj => custobj.MyCustomInt).NotNull().WithMessage("MyCustomInt must be a valid non null int. You specified '{0}'"); /* How can I put MyCustomIntAsString for the {0} */
但我不知道如何让MyCustomDateAsString和MyCustomIntAsString显示在MyCustomDate和MyCustomInt的错误消息中。
答案 0 :(得分:1)
因此,对于大多数验证器,您使用{PropertyValue}占位符来获取当前属性值,但在这种情况下这不会有所帮助,因为您需要不同属性的值。
然而,WithMessage的重载会带来一个可用于构建自定义占位符值的函数。
RuleFor(x=>x.Foo).NotNull().WithMessage("...blah {0}", x=>x.SomeOtherProperty);
最后一个参数实际上是一个Func [T,object]的params数组,因此您可以根据需要指定其中的多个,并按顺序处理它们。