2011-08-20 14 views
6

के साथ सत्यापन समस्या मुझे एक सत्यापन त्रुटि के साथ समस्या है जो केवल Windows Azure पर दिखाई देती है, लेकिन स्थानीय Azure Emulator पर नहीं।विंडोज़ एज़ूर, ईएफ और एमवीसी 3

अपने मॉडल में मैं एक विशेषता "प्रारंभ" और जर्मन दिनांक स्वरूप के लिए एक DisplayFormat के साथ एक वर्ग है:

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

अपने स्थानीय मशीन पर, सब कुछ ठीक है, लेकिन जब मैं क्षेत्र को बचाने की कोशिश विंडोज़ एज़ूर इंस्टेंस पर मुझे यह सत्यापन संदेश मिलता है:

मूल्य '22 .08.2011 'बेगिन के लिए मान्य नहीं है।

एक ही डेटाबेस (Azure SQL) का उपयोग कर दोनों (स्थानीय और बादल)। तो, मैं उलझन में हूँ। इसे ठीक करने के लिए कोई भी विचार?

उत्तर

7

DisplayFormat विशेषता (जैसा कि यह नाम सुझाता है) केवल निर्दिष्ट प्रारूप का उपयोग करके संपत्ति मूल्य प्रदर्शित करने के लिए उपयोग किया जाता है। सत्यापन के साथ इसका बिल्कुल कुछ नहीं है।

इस मामले में सत्यापन को डिफ़ॉल्ट मॉडल बाइंडर द्वारा निष्पादित किया जाता है जब यह POSTED स्ट्रिंग को डेटटाइम प्रॉपर्टी पर सेट करने का प्रयास करता है। यह डिफ़ॉल्ट स्थान जो आपके web.config में निर्दिष्ट किया जा सकता है भूमंडलीकरण तत्व का उपयोग का उपयोग करता है:

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

कारण जब आप Azure उदाहरण पर तैनात अपने कोड काम नहीं करता है, क्योंकि संभावना है कि सर्वर का उपयोग करने के लिए कॉन्फ़िगर है en-US संस्कृति जिसके लिए दिनांक समय प्रारूप अलग है।

यदि आप कुछ और विशिष्ट प्रारूप का उपयोग करना चाहते हैं तो आप अपने दृश्य मॉडल के लिए कस्टम मॉडल बाइंडर भी लिख सकते हैं और अंदरूनी विशेष रूप से इस विशेष कस्टम प्रारूप का उपयोग करके पोस्ट किए गए मान को पार्स कर सकते हैं।

+0

अब मुझे यह मिल गया है। धन्यवाद, जिसने समस्या हल की। – Gesh

संबंधित मुद्दे