FluentValidation.NET 等效于 [Display(Name)]

ser*_*0ne 5 c# asp.net-mvc fluentvalidation .net-core asp.net-core

FluentValidation.NET之前,我可以像这样正确地给一个自定义标签:

[Display(Name="Blah")]
public string BlahBlahBlah { get; set; }
Run Code Online (Sandbox Code Playgroud)

我可以通过多种方式消耗它:

@Html.LabelFor(m => m.BlahBlahBlah)
@Html.DisplayNameFor(m => m.BlahBlahBlah)

<label asp-for="BlahBlahBlah"></label>
Run Code Online (Sandbox Code Playgroud)

现在我想从我的模型中删除所有数据注释,并转向流畅的验证。在我的验证器中,我有这个:

RuleFor(o => o.BlahBlahBlah)
    .NotEmpty()
    .WithName("Blah");
Run Code Online (Sandbox Code Playgroud)

但这不起作用。为什么?

Ole*_*kyi 6

WithNameFluentValidation 中的方法仅用于调整验证错误消息,如果您想将 C# 属性名称替换为更用户友好的名称(有关详细信息,请参阅 覆盖默认属性名称)。

所以答案是 - 一般情况下您不能替换DisplayWithName(),只能用于验证错误消息。