我得到了一个 ViewModel (MovieNamesModel),如下所示:
{
public string? MovieName1 { get; set; }
public string? MovieName2 { get; set; }
public string? MovieName3 { get; set; }
...
...
public string? MovieName15 { get; set; }
public DateTime MovieDate1 { get; set; }
public DateTime MovieDate2 { get; set; }
public DateTime MovieDate3 { get; set; }
...
...
public DateTime MovieDate10 { get; set; }
}
我需要在此 ViewModel 上实现验证。最初,我想到使用数据注释来实现同样的目的。现在,使用数据注释实现日期时间验证(日期范围)至关重要。
然后我开始了解 Fluent Validation,并考虑将所有验证保留在一个地方。
所有 MovieName 字段的验证都是相同的,MovieDate 字段也是如此。
所以,我想为一堆相似的属性实现相同的 RuleFor<>,并且错误消息也需要写一次。
如下所示:
RuleFor(x => new { MovieName1, MovieName2, MovieName3, ..., MovieName15 })
.MaximumLength(50)
.WithMessage("MovieName<how to get the respective Movie Number here> can be of max 50 characters.");
-- The same am looking for Date Range Validation --
因此,这将对一堆相似类型的属性应用相同的规则。我不必一次又一次地编写/修改所有字段的错误消息。
谢谢..
您可以使用
ValidationRule
请参阅 https://learn.microsoft.com/en-us/dotnet/desktop/wpf/data/how-to-implement-binding-validation?view=netframeworkdesktop-4.8
旁注: 您可以添加一个带有
Movie
和 Name
属性的类 Date
,而不是重复电影的名称和日期。然后在每个属性的 setter 中(以及构造函数中)添加验证。
现在您可以在 ViewModel 中使用 ObservableCollection<Movie>
并使用 ListView 或类似的东西与数据模板结合使用来显示您的电影。例如https://www.c-sharpcorner.com/UploadFile/e06010/observablecollection-in-wpf/