タイプのプロパティからフォーマットの例外を取得すること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.config
MVC プロジェクトのファイルで検証フラグがオンになっていることを確認します。このファイルに移動し、以下を見つけて、
true
false の場合は設定します。
<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 を作成することもできます。