2011-08-20 15 views
6

ローカルのAzureエミュレータではなくWindows Azureにのみ表示される検証エラーに問題があります。私のモデルではWindows Azure、EF、およびMVC3での検証の問題

私は属性「スタート」とドイツ語の日付形式のためdisplayFormatに持つクラスがあります。私のローカルマシン上

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

を、すべてが正常ですが、私は、フィールドを保存しようとすると、 Windows Azureインスタンスでは、この検証メッセージが表示されます。

値'22 .08.2011 'はBeginnには無効です。

同じデータベース(Azure SQL)を使用する(ローカルとクラウドの両方)。 私は混乱しています。どのようにこれを修正するための任意のアイデア?

答えて

7

DisplayFormat属性は、指定された形式を使用してプロパティ値を表示する場合にのみ使用されます。検証とはまったく関係ありません。

この場合、POSTed文字列をDateTimeプロパティに設定しようとすると、デフォルトのモデルバインダによって検証が実行されます。これは、グローバル化の要素を使用して、web.configで指定することができ、デフォルトのロケールを使用しています。

<system.web> 
    ... 
    <globalization culture="de-DE" uiCulture="de-DE"/> 
</system.web> 

チャンスはサーバーを使用するように設定されているので、あなたがAzureのインスタンスにデプロイするとき、あなたのコードが動作しない理由は、日付時刻の形式が異なるen-USカルチャ。

さらに特定の形式を使用する場合は、ビューモデル用のカスタムモデルバインダーを記述し、この特殊なカスタム形式を使用してPOSTed値を手動で解析することもできます。

+0

今すぐ入手します。 ありがとう、それは問題を解決しました。 – Gesh

関連する問題