2012-10-11 3 views
6

有効期限の日付形式の設定に問題があります。IE、Firefoxなどの他のブラウザでasp.net mvcのChromeが正常に動作しています。Asp.net MVCで設定された有効期限の日付形式がChromeで失敗する

私は次のコードのように私のモデルで日付を定義している:

[Required] 
[Display(Name = "Data fi publicació")] 
[DisplayFormat(ApplyFormatInEditMode = true, DataFormatString = "{0:dd/MM/yyyy}")] 
public DateTime PublishingEndDate { get; set; } 

そして、私の意見で:

@Html.TextBoxFor(model => model.PublishingEndDate) 
@Html.ValidationMessageFor(model => model.PublishingEndDate) 

フォーマットMM/dd/yyyyと日付を検証@Html.ValidationMessageForと思われる問題が、何ヨーロッパのフォーマットdd/MM/yyyyで検証したいと思います。既定のカルチャ検証のフォーマット日付をdd/MM/yyyyに変更するにはどうすればよいですか?あなたの助け

+0

同様の質問がここで尋ねられました:http://stackoverflow.com/questions/5199835/mvc-3-jquery-validation-globalizing-of-number-decimal-field –

答えて

21

最後に、私はそれが完璧に動作IE、Firexfoxで、問題はChromeのみに影響を及ぼし発見し、クロームのバグであると思われる、私はjqueryののバリ方法をしなければならないhttp://forums.asp.net/t/1729179.aspx/1

で解決策を見つけました次のコードを使用してオーバーライドすること:

$(document).ready(function() { 
    $('.calendarPicker').datepicker({ dateFormat: "dd/mm/yy" }); 

$.validator.addMethod('date', 
    function (value, element, params) { 
     if (this.optional(element)) { 
      return true; 
     } 

     var ok = true; 
     try { 
      $.datepicker.parseDate('dd/mm/yy', value); 
     } 
     catch (err) { 
      ok = false; 
     } 
     return ok; 
    }); 
}); 
+0

私の問題は、datepickerで2番目の日付を選択した場合、検証エラーです - Chrome(40.0.2214.115を使用)のみ。この解決策は、元の質問のほぼ3年後に解決しました!良いですね! – ComfortablyNumb

1

ため

おかげで、あなたがweb.configファイルであなたの文化を設定したことを確認してください。これは、選択したカルチャーに適切な日付と番号の書式を使用します。

http://msdn.microsoft.com/en-us/library/bz9tc508(v=vs.100).aspx

+0

ありがとう、私はこれを試みましたが、それはdoens't動作します。 –

0

これは、私を助け:

$(function() { 
      $(".datepicker").datepicker({ 
       todayBtn: true, 
       language: "en-GB", 
       format: "dd/mm/yyyy", 
       clearBtn: true, 
       pickTime: false 
      }); 

      $.validator.addMethod("date", 
       function(value, element) { 
        return this.optional(element) || parseDate(value, "dd-MM-yyyy") !== null; 
       }); 
     }); 
0

クライアント側の検証を避けるために、入力に関連付けられたデータ値属性は必要ありません。それでは、私がやったことは、あなたが日時ピッカーを使用しない場合は... TextForまたはEditorForなどを使用するのではなく、私のために

<input type="text" class="datepicker form-control"> 

作品罰金...

0

をプレーンなHTMLを書き留めています:

クライアント検証の問題がは、どのような方法に日付/日時書式を受け付けないjquery.validate.unobtrusive.min.jsであるため(でもMVC 5)MVCのバグのため発生する可能性があります。残念ながら、手動で解決する必要があります。

私の最後に作業溶液:あなたが使用してmoment.jsをインストールすることができます

@Scripts.Render("~/Scripts/jquery-3.1.1.js") 
@Scripts.Render("~/Scripts/jquery.validate.min.js") 
@Scripts.Render("~/Scripts/jquery.validate.unobtrusive.min.js") 
@Scripts.Render("~/Scripts/moment.js") 

Install-Package Moment.js 

をそして、あなたが最終的に修正を加えることができますあなたが前に含める必要はあり

日付形式パーサーの場合:

$(function() { 
    $.validator.methods.date = function (value, element) { 
     return this.optional(element) || moment(value, "DD.MM.YYYY", true).isValid(); 
    } 
}); 
関連する問題