尝试在流畅的验证规则的WithMessage部分中使用属性时,不使用字符串属性,而只是输出true。我已经在使用集合的应用程序的其他区域中使用了验证(这不那么简单),我可以毫无问题地执行此任务。这里唯一的区别是它是一个带有基类的单个对象。
这是我的验证员:
public class MultiCulturalControlValidator : AbstractValidator<TitleMultiCulturalControlProperty>
{
public MultiCulturalControlValidator()
{
RuleFor(x => x.EnglishValue).NotEmpty().WithMessage("test error {0}", x => x.DisplayName);
}
}
我的viewmodel,删除了所有不相关的属性:
[Validator(typeof(MultiCulturalControlValidator))]
[DataContract]
public class TitleMultiCulturalControlProperty : MultiCulturalControlProperty
{
public TitleMultiCulturalControlProperty()
{
}
/// <summary>
/// Gets or sets the name of these culture table values.
/// </summary>
[DataMember]
public string DisplayName { get; set; }
/// <summary>
/// Gets or sets the required english value.
/// </summary>
// ReSharper disable once LocalizableElement
[Display(Name = "English")]
[StringLength(255)]
[DataMember]
public override string EnglishValue { get; set; }
}
如您所见,覆盖了所需的英语值。这是问题吗?但规则仍然正确运行,而且只是消息不正确。
规则未通过时显示的消息:
“测试错误为真”
'true'应为DisplayName字符串。我检查过,发布数据时名称不为空/空。我已经检查了所有的帮助,我找不到任何涉及这个问题。
由于
答案 0 :(得分:0)
答案太迟了,但我想知道你是否继承了&#34; MultiCulturalControlProperty&#34;是问题。
答案 1 :(得分:0)
我知道这很古老,但是我在寻找类似问题的解决方案时才发现了这个问题。这是我最终使用的语法(针对原始问题进行了重新设计)。
public class MultiCulturalControlValidator : AbstractValidator<TitleMultiCulturalControlProperty>
{
public MultiCulturalControlValidator()
{
RuleFor(x => x.EnglishValue).NotEmpty().WithMessage(x => string.Format("test error {0}", x.DisplayName));
}
}