0

データベースに日時値を挿入しようとしています。ASP.NET MVC 4 と SQL サーバーでエンティティ フレームワークを使用しています。

using (dc = new GateEntities())
{     
   tblSite site = new tblSite();
   site.CalledInAt = DateTime.Parse("19/09/2013 00:29 AM", new CultureInfo("en- US", false));    
   dc.tblSites.Add(site);
   dc.SaveChanges();
}

データを保存しようとすると、次のエラーが表示されます。

「値 '19/09/2013 00:29 AM' は CalledInAt には無効です。」

私も試しConvert.ToDateTime()ましたが無駄でした。

これは、私のローカル マシンでは問題なく動作します。共有ホスティング サーバーだけでは機能しません。

4

3 に答える 3

0

web.config でカルチャを設定すると、機能し始めました。

 <globalization uiCulture="en" culture="en-GB" />
于 2013-09-19T11:50:09.797 に答える
0

あなたがリストしたコードには2つのエラーがあります。

1つ目(質問の入力中に発生したエラーだと思います)は、CultureInfoが設定されている'en- US'ことです。'en-US'

もう 1 つは、米国の日付が月、日、および文字列でフォーマットされているため、設定している日付が年の 19 番目の月になります。

以下のこのコードは、日付値に対して機能します...

DateTime.Parse("09/19/2013 00:29 AM", new System.Globalization.CultureInfo("en-US", false));
于 2013-09-19T07:51:36.660 に答える
0

例外は、 string とは異なる日付形式を持つカルチャで発生する EF の検証によって発生します19/09/2013 00:29 AM

ユーザー入力からエンティティ プロパティに値を割り当てる場合、最善の方法は、UI カルチャから独立していることを確認することです。つまり、UI (おそらくビュー モデル) では、ユーザー入力をキャプチャしてDateTime値に変換する必要があります。DateTime次に、値をに代入するだけですsite.CalledInAt

もう 1 つのオプションは、ビュー モデルに UI カルチャを含め、それを使用してコントローラーで変換を行うことです。

于 2013-09-19T09:05:10.533 に答える