2014-12-10 4 views
0

При попытке использовать свойство в части 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. Я проверил, и имя не пусто или пусто, когда данные отправлены. Я проверял все на помощь, и я не мог найти ничего, что касалось этой проблемы.

Благодаря

+0

Вы пытаетесь получить доступ к значению свойства 'string DisplayName' или значению в атрибуте' [Display] '? –

+0

Стоимость объекта. – ziggyx

+0

Я не знаком с FluentValidation, но должен ли он быть. .WithMessage (String.Format ("test error {0}", x => x.DisplayName)); ' –

ответ

0

слишком поздно от ответа, но мне интересно, если тот факт, вы унаследовав от «MultiCulturalControlProperty» был вопрос.

Смежные вопросы