0

次のようなMVC情報ファイルでプロパティを宣言しました

  [Required(ErrorMessage = "End Date has not being entered")]
        [DataType(DataType.Date)]
        [DisplayFormat(DataFormatString = "{0:MM/dd/yyyy}", ApplyFormatInEditMode = true)]
        [RegularExpression(@"^(0[1-9]|1[012])[/](0[1-9]|[12][0-9]|3[01])[/]\d{4}$", ErrorMessage = "End Date should be in MM/dd/yyyy format")]
        public DateTime? ExpirationDate { get; set; }

しかし、2013 年 5 月 13 日のような正しい形式で日付を入力すると、. それでもエラーメッセージが表示されます

End Date should be in MM/dd/yyyy format

欠落しているコード、または上記の他のエラーがあります。

4

4 に答える 4

3

正規表現で日付を検証することはできません。DateTime.TryParseExact を使用して文字列を DateTime オブジェクトに変換してください。正規表現は、うるう年などの微妙な点を常に見逃します。

于 2013-05-17T11:23:03.880 に答える
0

それをチェックしてください。私はそれがうまくいくとは思わずにこれを試しました。

MVC で実際に RegExp を使用して DateTime を検証できます。これは私のセットアップです:


プロパティの RegExp 属性:

[正規表現(@"(^$)|(^\d{2}/\d{2}/\d{4})|(^((\d{1})|(\d{2})) /((\d{1})|(\d{2}))/(\d{4})\s((\d{1})|(\d{2}))[:]{1 }((\d{1})|(\d{2}))[:]{1}((\d{1})|(\d{2}))\s((午前)|(午後)))", ErrorMessage = "無効な日付")]


強制検証: 空の文字列、MM/dd/yyyy 形式の月/日付の 1 桁または 2 桁 (例: 3/20/2015 または 03/20/2015 または 3/2/2015)、 C# 日付 (例: MM/dd ) /yyyy hh:mm:ss tt) - これにより、サーバーがこのプロパティを C# DateTime に変換すると、ModelState.IsValid がこのプロパティに対して true を返すことができます。


ビューの TextBoxFor: @Html.TextBoxFor(x => x.DateOfWeightAndHeightCapture, "{0:MM/dd/yyyy}", new { @class = "form-control" })


これにより、クライアント側とサーバー側の検証を実施する MVC TextBoxFor によって編集されたモデルに DateTime プロパティを設定できます。

于 2015-03-11T17:11:24.247 に答える