2015-06-12 4 views
30

मेरे पास .NET MVC 5 एप्लिकेशन है जो डेटा एनोटेशन, एंटिटी-फ्रेमवर्क Jquery 2.1.3 और Jquery UI 1.11.4 का उपयोग कर रहा है।निर्दिष्ट मान आवश्यक प्रारूप के अनुरूप नहीं है yyyy-MM-dd

जब मैं यूके प्रारूप "डीडी/एमएम/वाई वाईवायवाई" का उपयोग करके टाइप डेट के इनपुट के साथ एक संपादन फ़ॉर्म प्रस्तुत करता हूं; निम्न त्रुटि संदेश प्रकट होता है जब गूगल क्रोम का उपयोग कर:

निर्धारित मूल्य '10/10/2001 yyyy-MM-dd '' आवश्यक प्रारूप, के अनुरूप नहीं है '। jQuery-2.1.3.js: 5317

मॉडल

public class MyModel 
{ 
    [Column(TypeName = "date"), DataType(DataType.Date), Display(Name = "My date")] 
    [DisplayFormat(DataFormatString = "{0:dd/MM/yyyy}")] 
    public string MyDate { get; set; } 
} 

मार्क अप

<input class="text-box single-line" data-val="true" data-val-date="The field My date must be a date." id="MyDate" name="MyDate" type="date" value="10/10/2001" /> 

मूल्य इनपुट नियंत्रण में ठीक से सेट है लेकिन तारीख नहीं है ब्राउज़र में दिखाई देते हैं। मैंने पहली बार सोचा था कि यह jQuery के साथ एक मुद्दा था क्योंकि यह jQuery स्क्रिप्ट फ़ाइल को प्रदर्शित कर रहा है, लेकिन जब आईई और फ़ायरफ़ॉक्स में परीक्षण सब कुछ ठीक काम कर रहा है।

मुझे लगता है कि यह क्रोम में मेरी क्षेत्रीय सेटिंग थी क्योंकि डिफ़ॉल्ट रूप से क्रोम सोचता है कि हर कोई अंग्रेजी अमेरिका में है, मैंने क्षेत्रीय सेटिंग को ब्रिटेन में बदल दिया और फिर भी वही समस्या दिखाई देती है।

एक साधारण फिक्स मेरे मॉडल में प्रारूप को सार्वभौमिक में बदलने के लिए होगा, लेकिन यूके उपयोगकर्ताओं के लिए यह एक छोटा विदेशी है।

क्रोम को बताने का कोई तरीका है जो "डीडी/एमएम/वाई वाईवायवाई" में दिनांक स्वरूप स्वीकार करता है?

+0

क्या आप ब्राउज़र HTML5 डेटपिकर कार्यान्वयन को प्रस्तुत करना चाहते हैं (या आप एक jquery प्लगइन का उपयोग कर रहे हैं)? –

+0

मेरा सुझाव है कि आप 'डेटपिकर ui' का उपयोग करें ताकि आईएसओ प्रारूप सर्वर पर भेजा जा सके जबकि 'dd/MM/dddd' क्लाइंट साइड पर कॉन्फ़िगर किया जाएगा। – Bellash

+0

@StephenMuecke मैं ब्राउज़र को दिनांक पिकर को संभालने देता था, इसलिए किसी तृतीय पक्ष लाइब्रेरी की एक कम आवश्यकता है। –

उत्तर

41

एचटीएमएल 5 दिनांक पिकर राज्य के लिए विनिर्देश बताते हैं कि दिनांक प्रारूप yyyy-MM-dd (आईएसओ प्रारूप) में होना चाहिए। इसका मतलब यह है कि आप DisplayFormatAttribute होना चाहिए

[DisplayFormat(DataFormatString = "{0:yyyy-MM-dd}", ApplyFormatInEditMode = true)] 
public string MyDate { get; set; } 

वैकल्पिक रूप से आप मैन्युअल @Html.DisplayFor()

+0

क्या पेज लोड करने के बाद बॉक्स को दोबारा सुधारने के लिए जेएस का उपयोग करने से कम कमजोर कामकाज है? '[DisplayFormat] 'jQuery को फ़ील्ड को रीसेट करने और कंसोल में अमान्य मान संदेश देने का कारण बनता है। इसे' टेक्स्टबॉक्स फोर 'में स्वरूपित करने से यह त्रुटि हल होती है (और मुझे अपना मास्क प्लगइन लागू करने की इजाजत देता है), लेकिन फिर भी आईएसओ प्रारूप में तारीख प्रदर्शित करता है। domReady पर, मैं अमेरिकी स्वरूपण का उपयोग करने के लिए मूल्यों को चारों ओर स्थानांतरित करता हूं। – Sinjai

+0

@ सिंजई, क्षमा करें, मुझे आपकी टिप्पणी समझ में नहीं आ रही है। '[DisplayFormat] ' और jQuery किसी भी तरह से संबंधित नहीं हैं (यह एक मान रीसेट नहीं करेगा), और यह प्रश्न/answ er ब्राउज़र से संबंधित है एचटीएमएल -5 डेटपिकर कार्यान्वयन (इसमें मास्क प्लगइन के साथ कुछ लेना देना नहीं है)। यदि आपको कोई समस्या है, तो प्रासंगिक विवरण –

+0

हाँ के साथ एक नया प्रश्न पूछें, शायद एक टिप्पणी में एक तरफ के लिए बहुत अधिक। हालांकि, मेरे पास एक प्रश्न के लिए शब्द का कोई बेहतर तरीका नहीं है, हालांकि। सत्यापन के लिए एएसपी.नेट एमवीसी परियोजनाओं में jQuery का उपयोग किया जाता है, और मुझे लगता है कि यह क्या हो रहा है। कंसोल बस कहता है कि त्रुटि jquery-version.js में उत्पन्न होती है। इसके बारे में चिंता मत करो। – Sinjai

1

में

@Html.TextBoxFor(m => m.MyDate, "{0:yyyy-MM-dd}", new { @type = "date" }) 

बाद में विकल्प का उपयोग कर आप उपयोग के लिए DataFormatString = "{0:dd/MM/yyyy}") रखने के लिए अनुमति देता है प्रारूप में जोड़ सकते हैं आप उपयोग कर सकते हैं InputTagHelper.Format

<input asp-for="MyDate" asp-format="{0:yyyy-MM-dd}" /> 

https://docs.asp.net/projects/api/en/latest/autoapi/Microsoft/AspNetCore/Mvc/TagHelpers/InputTagHelper/#prop-Microsoft.AspNetCore.Mvc.TagHelpers.InputTagHelper.Format

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