問題があります...ユーザー登録フォームがあります..このフォームには、生年月日を表す3つのフィールドがあります。私は3つのフィールド(3つのメニュー)を区別するのが好きです。有効な日付かどうかを確認できるバリデーターを作成するにはどうすればよいですか?(2011年2月30日のような日付は受け入れません)JavaScript(クライアント側)でそれを行うことはできますが、model-vew-controllerで通常どおりバリデーターを使用したい場合でも?
2 に答える
2
プロパティではなくクラスにバリデータをバインドできます。私はそのようなことをします:
//The Model
[DateValidator]
public class Date
{
public string Month { get; set; }
public string Day { get; set; }
public string Year { get; set; }
}
//The DataAnnotation
[AttributeUsage(AttributeTargets.Class)]
class DateValidatorAttribute : ValidationAttribute
{
public override bool IsValid(object value)
{
var date = value as Date;
Debug.Assert(date != null);
var dateString = date.Month + date.Day + date.Year;
DateTime dateTime;
var isValid = DateTime.TryParseExact(dateString, "ddMMyyyy", CultureInfo.InvariantCulture, DateTimeStyles.None,
out dateTime);
return isValid;
}
}
編集
DateTime.TryParseExact は、DateTime の有効性をチェックします (つまり、30/02/2011 を解析しようとすると false が返されます)。
于 2011-09-28T13:13:35.530 に答える
0
コンテキストからこれら 3 つのフィールドを取得し、それらを完全に検証するモデル バインダーを作成します。
于 2011-09-28T13:02:02.580 に答える