0

サイトでユーザーに日付を問い合わせるため、グローバリゼーションを追加します。私のドイツ語のユーザーは、 "1966-12-31"ではなく、 "31.12.1966"と入力します。MVC 5 - グローバル化を実行できません

だから私は、プロジェクトに nuget、パッケージに 「jQuery.Validation.Globalize」を追加し、 「jqueryの - グローバル化」。

私はBundleConfigを設定できません!私の研究から、私はglobalize.jsとその他のファイルが必要であることを知っています。私は、このドイツの元からのメッセージを翻訳

Error at line 9, column 5 in http://localhost:58289/Scripts/jquery.validate.globalize.js 
0x800a138f - runtimeerror in JavaScript: 
The property "methods" of a undefindes or null-pointer can not bei called 

... 
@section Scripts { 

@Scripts.Render("~/bundles/global") 
@Scripts.Render("~/bundles/jqueryval") 
@Scripts.Render("~/bundles/unobtrusiveajax") 


<script type="text/javascript"> 


    $(function() { 
     $.validator.methods.date = function (value, element) { 
      Globalize.culture("de-DE"); 
      // you can alternatively pass the culture to parseDate instead of 
      // setting the culture above, like so: 
      // parseDate(value, null, "en-AU") 
      return this.optional(element) || Globalize.parseDate(value) !== null; 
     } 
    }); 
</script> 
}    

しかし、私はエラーを取得する:ビューに使用して

bundles.Add(new ScriptBundle("~/bundles/jquery").Include(
        "~/Scripts/jquery-{version}.js")); 

     bundles.Add(new ScriptBundle("~/bundles/jqueryval").Include(
      "~/Scripts/jquery.validate*")); 

     bundles.Add(new ScriptBundle("~/bundles/global").Include(
      "~/Scripts/globalize.js", 
      "~/Scripts/cldr.js").IncludeDirectory("~/Scripts/cldr/", 
      "~/Scripts/globalize/") 
      ); 

:だから私はバンドルを作ってみます

Ausnahmefehler in Zeile 9, Spalte 5 in http://localhost:58289/Scripts/jquery.validate.globalize.js 
0x800a138f - Laufzeitfehler in JavaScript: 
Die Eigenschaft "methods" eines undefinierten oder Nullverweises kann nicht abgerufen werden. 

必要以上に/ ot彼女のファイルをバンドルに入れる?

どうすればよいですか?どんな助け?

Sincerly ピーター

+0

グローバル化1.x(新しいバージョン)を試すことはできますか? –

+0

Glabalizeを使用しています。1.2.2 – PBum

+0

グローバル化について1。xには、「Globalize.culture」はありません。私は0.x APIを新しい1.xライブラリで使用しているのではないかと心配しています –

答えて

1

私はそれをこのように解決:私の見解では

は、次のスクリプトブロックです:

<script src="~/Scripts/jquery.validate.unobtrusive.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/cldr/unresolved.js"></script> 

<script src="~/Scripts/globalize.js"></script> 
<script src="~/Scripts/globalize/currency.js"></script> 
<script src="~/Scripts/globalize/number.js"></script> 
<script src="~/Scripts/globalize/date.js"></script> 
<script src="~/Scripts/globalize/plural.js"></script> 
<script src="~/Scripts/globalize/relative-time.js"></script> 
<script src="~/Scripts/globalize/unit.js"></script> 
<script src="~/Scripts/jquery.validate.globalize.js"></script> 


<script> 
    $(document).ready(function() { 
     // Use $.getJSON instead of $.get if your server is not configured to return the 
     // right MIME type for .json files. 
     $.when(
      $.get("/Scripts/cldr/main/de/ca-gregorian.json"), 
      $.get("/Scripts/cldr/main/de/numbers.json"), 
      $.get("/Scripts/cldr/supplemental/likelySubtags.json"), 
      $.get("/Scripts/cldr/supplemental/timeData.json"), 
      $.get("/Scripts/cldr/supplemental/weekData.json") 
     ).then(function() { 
      // Normalize $.get results, we only need the JSON, not the request statuses. 
      return [].slice.apply(arguments, [0]).map(function (result) { 
       return result[0]; 
      }); 
     }).then(Globalize.load) 
    .then(function() { 
     Globalize.locale("de-DE"); 
    }); 
    }); 

私のデータクラスは、このようなannotiationがあります

... 
[Required] 
    [DataType(DataType.DateTime)] 
    [DisplayFormat(ApplyFormatInEditMode = true, DataFormatString = "{0:dd.MM.yyyy}")] 
    public DateTime Geburtsdatum { get; set; } 
... 

そして - とても大事! - あなたはデータファイルを取得する必要があります! clrd-dataがではなく、NuGet-Packages "jQuery.Validation.Globalize"/"jquery-globalize"の一部であるです。 (はい、それはプロジェクトページに記載されていますが、私はそれを見ませんでした...--()

Bower(NuGetあたり)をインストールし、Bower the Cldr-data経由でインストールしました。

bower install cldr-dates-full 

Directoryから(ここでは、ファイル選択2のためのオンライン・ツールを見つける。)

は、その後、私は必要なJSON-ファイルを移動「bower_components」を "(パッケージ上で概要を参照し、指示1をインストールします) scripts \ cldr \ main \ de "、それぞれ" scripts \ cldr \ supplemental "となります。

私はそれらをプロジェクトに追加し、それらを「コンテンツ」、「コピーなし」とマークします。

最終的には動作します。 :-)

jsファイルとjsonファイルをバンドルするように管理している場合、私はその答えを更新します。

+0

jsonファイルをバンドルするのに成功しましたか? (js-ファイルは問題ではありませんか?) –

+0

申し訳ありませんが、私はそれを管理しませんでした。問題はファイルの順序です。私は自分のバンドルハンドラとデフォルトの順序をアルファベットで書くつもりはありません。そして、これは動作していません! – PBum

+0

グローバリゼーションコンパイラが見つかりました。バンドルはかなりうまくいきます。それを走らせるのは簡単ではなかった。 –

関連する問題