【问题标题】:MVC FluentValidation WithMessage using a propertyMVC FluentValidation WithMessage 使用属性
【发布时间】:2014-12-10 00:11:29
【问题描述】:

当尝试使用流式验证规则的 WithMessage 部分中的属性时,不使用字符串属性,而是仅输出 true。我已经在应用程序的其他区域使用集合进行了验证(这不太直接),我可以毫无问题地执行此任务。这里唯一的区别是它是一个带有基类的单个对象。

这是我的验证器:

public class MultiCulturalControlValidator : AbstractValidator<TitleMultiCulturalControlProperty>
{
    public MultiCulturalControlValidator()
    {
        RuleFor(x => x.EnglishValue).NotEmpty().WithMessage("test error {0}",  x => x.DisplayName);
    }
}

我的视图模型,去掉了所有不相关的属性:

[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 字符串。我检查了,发布数据时名称不为空/空。我已经检查了所有的帮助,但找不到任何涉及此问题的内容。

谢谢

【问题讨论】:

  • 您是在尝试访问属性string DisplayName 的值还是[Display] 属性中的值?
  • 属性的值。
  • 我不熟悉 FluentValidation,但应该是.WithMessage(String.Format("test error {0}", x =&gt; x.DisplayName));
  • 不能将格式与表单(字符串、lambda)一起使用。没有骰子。
  • 根据this documentation,你所做的应该是有效的

标签: c# asp.net-mvc validation fluentvalidation


【解决方案1】:

我知道这是古老的,但我只是在寻找类似问题的解决方案时发现了这个问题。这是我最终使用的语法(针对原始问题进行了修改)。

public class MultiCulturalControlValidator : AbstractValidator<TitleMultiCulturalControlProperty>
{
    public MultiCulturalControlValidator()
    {
         RuleFor(x => x.EnglishValue).NotEmpty().WithMessage(x => string.Format("test error {0}",  x.DisplayName));
    }
}

【讨论】:

    【解决方案2】:

    答案为时已晚,但我想知道您从“MultiCulturalControlProperty”继承的事实是否是问题所在。

    【讨论】:

      猜你喜欢
      • 2023-03-09
      • 1970-01-01
      • 2012-12-19
      • 1970-01-01
      • 1970-01-01
      • 2016-08-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多