15

FluentValidationを使用すると、デリゲートを指定せずにstringa を解析可能として検証できますか?DateTimeCustom()

理想的には、EmailAddress 関数のようなものを言いたいと思います。

RuleFor(s => s.EmailAddress).EmailAddress().WithMessage("Invalid email address");

だから、このようなもの:

RuleFor(s => s.DepartureDateTime).DateTime().WithMessage("Invalid date/time");
4

3 に答える 3

33
RuleFor(s => s.DepartureDateTime)
    .Must(BeAValidDate)
    .WithMessage("Invalid date/time");

と:

private bool BeAValidDate(string value)
{
    DateTime date;
    return DateTime.TryParse(value, out date);
}

または、カスタム拡張メソッドを作成することもできます。

于 2010-04-01T13:59:28.750 に答える
2

s.DepartureDateTime が既に DateTime プロパティである場合。それを DateTime として検証するのはナンセンスです。しかし、文字列の場合は、Darin の回答が最適です。

もう 1 つ追加する必要があるのは、同じメソッドをすべての場所で繰り返さないようにするために、BeAValidDate() メソッドを外部の静的クラスに移動する必要があるとします。そのように選択した場合は、Darin のルールを次のように変更する必要があります。

RuleFor(s => s.DepartureDateTime)
    .Must(d => BeAValidDate(d))
    .WithMessage("Invalid date/time");
于 2013-01-14T13:50:18.540 に答える