1

ユーザーが生年月日を入力できる Html.TextBoxFor 要素があります。今日の日付よりも古い日付のみを入力するようにしたいと思います。私のモデルでの検証は次のとおりです。

[Required(ErrorMessage = "Birthdate is required")]
[RegularExpression(@"^(0[1-9]|1[0-2])\/(0[1-9]|1\d|2\d|3[01])\/(19|20)\d{2}$", ErrorMessage = "Please use MM/DD/YYYY")]
[DataType(DataType.Date)]
public System.DateTime Dob { get; set; }

ここに私の見解の関連部分があります:

<td>
  @Html.Label("DOB:")
  @Html.TextBoxFor(m => m.Driver.Dob, "{0:dd/MM/yyyy}")
  @Html.ValidationMessageFor(m => m.Driver.Dob)
</td>

これを行うために.netが提供する組み込みの方法はありますか?

4

3 に答える 3

2

独自のカスタム属性を作成します。

[DateValidation]
public System.DateTime Dob { get; set; }

public class DateValidationAttribute : ValidationAttribute {
  public override bool IsValid(object value) {
     DateTime dateValue;
     var date = DateTime.TryParse(value.toString(), out dateValue);
     // "var dateValue = (DateTime) value;" might work as well, let me know what does.
     return dateValue < DateTime.Now;
  }
}

重要: 属性クラスの名前は で終わる必要がありますAttribute

于 2013-10-10T20:11:33.257 に答える
0

JQuery DatePicker の使用に問題がない場合は、このリンクをたどって、

@Html.TextBox("",  String.Format("{0:yyyy-MM-dd}", Model.HasValue ? Model : DateTime.Today), new { @class = "dp", @readonly = "readonly"})

<script type='text/javascript'>

$(document).ready(function () {   
            $(".dp").datepicker({
                maxDate: new Date,
                dateFormat: 'dd/M/yy',
                changeYear: true,
                changeMonth: true
            });
});

</script>
于 2013-10-11T10:37:16.767 に答える