0

こんにちは、登録ページの一貫した検証を作成しようとしています。問題が発生しているプロパティは次のとおりです。

    [DateTimeValidation(ErrorMessageResourceType = typeof(EnValidationResources), ErrorMessageResourceName = "__LK_UserModel_BirthDate_Is_Required__")]
    public DateTime BirthDate { get; set; }

テスト中に、 DateTime に独自の検証属性を追加したとしても、次のことに気付きました。

public class DateTimeValidation: ValidationAttribute
{
    protected override ValidationResult IsValid(object value, ValidationContext validationContext)
    {
        var dateTimeString = value.ToString();
        DateTime dateTimeParseResult;
        DateTime.TryParse(dateTimeString, out dateTimeParseResult);
        if (dateTimeParseResult.Equals(default(DateTime)))
        {
            return new ValidationResult(ErrorMessageString);
        }
        return null;
    }

}

ユーザーが null の DateTime を投稿した場合でも、次の応答テキストが返されます。

「null 値を System.DateTime に変換できません。パス 'birthDate'、行 1、位置 17。」

組み込みのエラー応答テキストを返さないように asp.net web.api を作成するにはどうすればよいですか?

4

1 に答える 1

0

試す:

[DateTimeValidation(ErrorMessageResourceType = typeof(EnValidationResources), ErrorMessageResourceName = "__LK_UserModel_BirthDate_Is_Required__")]
public DateTime? BirthDate { get; set; } //use nullable type.
于 2014-01-25T09:09:46.167 に答える