タイプのプロパティからフォーマットの例外を取得することDateTimeは、非常に厄介な問題です。で検証を行う場合、これはかなり一般的な問題DateTimeです。
DataAnnotaionsサーバー側で動作し、それらを最大限に活用するにModelState.IsValid()は、コントローラーを追加する必要があります。
public ActionResult Index(MyViewModel model)
{
if(ModelState.IsValid())
{
// valid data received...
}
else
{
// Invalid data, add model error here and return view...
}
}
これらをクライアント側JavaScriptで機能させるには、コードに 2 つの追加ファイル、つまりコア ライブラリjquery.validate.jsとjquery.validate.unobtrusive.js一緒に含める必要があります。jQueryデフォルトでは、これらのファイルはすべて基本的な MVC プロジェクトに含まれており、Layout.
これらのファイルを含める順序に注意することが重要です。jQueryコアは常に一番上にあり、その後に検証ライブラリが続きます。
- jquery.js
- jquery.validate.js
- jquery.validate.unobtrusive.js
web.configMVC プロジェクトのファイルで検証フラグがオンになっていることを確認します。このファイルに移動し、以下を見つけて、
truefalse の場合は設定します。
<appSettings>
<add key="ClientValidationEnabled" value="true"/>
<add key="UnobtrusiveJavaScriptEnabled" value="true"/>
</appSettings>
これにより、検証がクライアント側で機能するように設定されます。モデル プロパティをRegularExpressionで装飾できます。
[Required]
[RegularExpression("^(([0-2]?[0-9]|3[0-1])/([0]?[1-9]|1[0-2])/[1-2]\d{3}) (20|21|22|23|[0-1]?\d{1}):([0-5]?\d{1})$", ErrorMessage = "Invalid date")]
public string DateTimeStart { get; set; }
datetimeこれにより、 in形式が検証されdd-mm-yyyy hh:mmます。
この場合string、正規表現が日付形式を処理するため、プロパティを型にすることもできます。
これとは別に、カスタム DataAnnotation を作成することもできます。