1

ビューモデルでは、この属性を持つフィールドを設定しました。

ユーザーが正しい形式で日付と時刻を入力すれば、すべて正常に機能します。

ユーザーがDateTimeを正しい形式で挿入しないと、エラーが表示されます。

クライアントでも検証をお願いします。

やり方を教えていただけますか?

   [Required]
    [Display(Name = "Start DateTime")]
    [DisplayFormat(ApplyFormatInEditMode = true, DataFormatString = "{0:MM/dd/yyyy HH:mm}")]
    public System.DateTime DateTimeStart { get; set; }
4

2 に答える 2

3

タイプのプロパティからフォーマットの例外を取得すること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.jsjquery.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 を作成することもできます。

于 2013-01-23T09:17:10.403 に答える
1

まず、ユーザーが日付を入力できるようにするために何を使用していますか?

Jquery DatePickerを使用している場合は、この例を参照してください。ユーザーが間違った形式で日付を入力する方法はありません (要素を調べてテキストボックスの値を変更することを除いて、無視できます)。

Jquery Datepicker を使用したサンプル コード:

<!doctype html>

<html lang="en">
<head>
  <meta charset="utf-8" />
  <title>jQuery UI Datepicker - Default functionality</title>
  <link rel="stylesheet" href="http://code.jquery.com/ui/1.10.0/themes/base/jquery-ui.css" />
  <script src="http://code.jquery.com/jquery-1.8.3.js"></script>
  <script src="http://code.jquery.com/ui/1.10.0/jquery-ui.js"></script>
  <link rel="stylesheet" href="/resources/demos/style.css" />
  <script>
  $(function() {
    $( "#datepicker" ).datepicker();
  });
  </script>
</head>
<body>

<p>Date: <input type="text" id="datepicker" /></p>


</body>
</html>

DatePicker を使用していない場合は、使用することを強くお勧めします。

datepicker を初めて使用する場合は、次の一覧にある記事を参照して開始できます。

于 2013-01-23T09:10:39.247 に答える