私は現在、ユーザーが生年月日を入力する必要があるフォームを作成しています。私は、これを行う最もユーザーフレンドリーな方法は、別々の日付の日、月、および年の入力フィールドを使用することであると判断しました。ASP.NET MVCモデルは、日、月、年の文字列フィールドを単一のDateTimeオブジェクトにバインドします
私は生年月日、生年月日、生年月日のテキストボックスを含む強く型付けされたビューを持っています。フォームがサーバーに送信されると、これらの送信された文字列値を適切なDateTimeオブジェクトに変換する必要があります。私は現在、Age Validationテストを実行するカスタムバリデーターでこのDateTimeオブジェクトを生成していますが、はるかに良いアプローチがあると思います。
これまでのところ、私は次のようにモデルコンストラクタでDateTimeオブジェクトを構築しようとしている:フォームがあるときになるように、私は、上記試してみましたよう
public class Applicant
{
[Required(ErrorMessage = "Day Required")]
public string DobDay { get; set; }
[Required(ErrorMessage = "Month Required")]
public string DobMonth { get; set; }
[Required(ErrorMessage = "Year Required")]
[BirthDateValidation("DobDay", "DobMonth")]
public string DobYear { get; set; }
public DateTime BirthDate { get; set; }
public Applicant()
{
this.BirthDate = new DateTime(Convert.ToInt32(this.DobYear), Convert.ToInt32(this.DobMonth), Convert.ToInt32(this.DobDay));
}
}
は、このタスクは、より自動化させるためにそこの方法ですDateTimeオブジェクトは、投稿された生年月日、生年月日、生年月日のフォーム値を使用して自動的に作成されます。
あなたのコンストラクタ文句を言わないモデルが結合して働きます。カスタムModelBinderを作成してフォームデータを読み込んで、DateTimeプロパティを構築することができます。 –
_more automated_とはどういう意味ですか?そして、なぜそれらのプロパティを 'string'ではなく' int'として定義しますか? –
おそらく悪い単語の選択が、私はコンストラクタがDateTimeオブジェクトを生成する方法を探していましたが、これは可能です。 – CodeMonkey