При попытке использовать свойство в части WithMessage свободного правила проверки свойство string не используется, и вместо этого оно просто выводит true. Я использовал проверку в других областях приложения, используя коллекции (которые были менее прямолинейными), и я мог выполнять эту задачу без проблем. Единственное отличие здесь в том, что это единственный объект с базовым классом.MVC FluentValidation WithMessage с использованием свойства
Вот мой валидатор:
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; }
}
Как вы можете видеть, требуется английское значение перезаписывается. Это проблема? Правило все еще выполняется правильно, и это просто сообщение, которое неверно.
Сообщение, которое отображается, когда правило не проходит:
«Ошибка теста правда»
«истина» должна быть строка DisplayName. Я проверил, и имя не пусто или пусто, когда данные отправлены. Я проверял все на помощь, и я не мог найти ничего, что касалось этой проблемы.
Благодаря
Вы пытаетесь получить доступ к значению свойства 'string DisplayName' или значению в атрибуте' [Display] '? –
Стоимость объекта. – ziggyx
Я не знаком с FluentValidation, но должен ли он быть. .WithMessage (String.Format ("test error {0}", x => x.DisplayName)); ' –