2017-01-06 12 views
0

私はmvc、.netなどを初めて使っています。私は日付形式でいつもの問題を抱えています。私は 日付形式クライアントの検証 - MVC

[DisplayFormat(ApplyFormatInEditMode = true, DataFormatString = "{0:dd/MM/yyyy}")] 
    [DataType(DataType.Date)] 
    [Display(Name = "Release Date")] 
    public DateTime ReleaseDate { get; set; } 
私のモデルにデータ注釈を使用して開始私Create.cshtmlは次のようになります。

<div class="form-group"> 
     @Html.LabelFor(model => model.ReleaseDate, htmlAttributes: new { @class = "control-label col-md-2" }) 
     <div class="col-md-10"> 
      @Html.EditorFor(model => model.ReleaseDate, new { htmlAttributes = new { @class = "form-control", placeholder="dd/MM/yyyy" } }) 
      @Html.ValidationMessageFor(model => model.ReleaseDate, "", new { @class = "text-danger" }) 
     </div> 
    </div> 

私は形式DD/MM /で日付を入れたとき、私は、オブジェクトを作成しようとしましたyyyy jqueryの検証からこのエラーメッセージが表示されます。

フィールドのリリース日付は日付である必要があります。

値「2013年5月28日」である:私はMM/DD/YYYYの形式の日付を試みたが、作成ボタンをクリックした私は、サーバーのバリデータからそのメッセージを得た

リリース日は無効です。

いずれの形式でも、バリデーターのいずれかと競合がありました。 多くの研究の後で、私がそれを動作させる唯一の方法は、jquery検証をカスタムスクリプトでオーバーライドすることでした(ここで私が見つけたカップルを試しました)。私は、jQuery ProjectとjQuery validationglobalizeに基づいているJohn Reillyのglobalizeを使ってしまいました。 指示に従うとすべてが機能します。すべてのオブジェクトが作成され、フォーマット間に矛盾はありません。

私の修正は以下のとおりです。

のWebConfig:

<system.web> 
<globalization culture="en-GB" uiCulture="en-GB" /> 

_Layout.cshtml:

<script src="~/Scripts/jquery-1.10.2.js"></script> 
<script src="~/Scripts/bootstrap.js"></script> 
<script src="~/Scripts/jquery.validate.js"></script> 
<script src="~/Scripts/cldr.js"></script> 
<script src="~/Scripts/cldr/event.js"></script> 
<script src="~/Scripts/cldr/supplemental.js"></script> 
<script src="~/Scripts/globalize.js"></script> 
<script src="~/Scripts/globalize/number.js"></script> 
<script src="~/Scripts/globalize/date.js"></script> 

<script src="~/Scripts/jquery.validate.globalize.js"></script> 

私はそのソリューションを使用し続ける場合は(私はバンドルにそれらが含まれます)

唯一の問題は、クライアント側の検証がなくなったことです。日付の検証だけでなく、すべてのフィールドの検証。たとえば、私は、必要な文字列フィールドがあり、それに何も入れていない場合、私は必要なフィールドについて取得するために使用したjsエラーメッセージを取得しません。または、私が日付フィールドに "asdasdasd"を置くと、私はjsエラーを取得しません。サーバーバリデーターから[作成]をクリックするとエラーが表示されます。

だから、クライアント側の検証を取り戻す方法はありますか?

ありがとうございます。

PS:jsに関する私の知識はかなり基本的です。

答えて

0

クライアント側の日付形式をサーバー側の日付形式と同期させないでください。クライアント側で特定のフォーマットが必要な場合は、JQueryのdatepickerにそのフォーマットを使用するよう指示できます。しかし、サーバーがその正確なフォーマットも使用するとは思わないでください。

私の回答hereを参照してください。ここで、MVCがどのように日付を処理するかを詳しく説明します。

+0

返信いただきありがとうございます。私はあなたが他のポストで異なる国について使用している例を得るが、私はそれが私のケースにどのように当てはまるかは分からない。現在、クライアント/サーバーの形式が同期されています。サーバーはdd/MM/yyyyを要求し、クライアントはdd/MM/yyyyも要求します。私の問題は、クライアントがこれまでのようなエラーメッセージを出さないことです。 –

+0

私の全体的なポイントは、あなたの問題は、あなたがそれらを同期しようとしているという事実から生じており、それは良い解決策ではないということです。同期のために記述したすべてのJQueryコードを削除すると、問題はなくなります。全体のアイデアは、それらを同期させることではありません。 – CodingYoshi

+0

ええ、でもそれは私が必要なものではありません。ローカルフォーマットを使用するには両方とも必要です。 –