2013-05-15 4 views
12

में मैं एक संपत्ति ExpiredDate है परिभाषित MVCमान्य DateFormat Mvc

[Required] 
     [DisplayFormat(DataFormatString = "{0:MM/dd/yyyy}")] 
     public DateTime? ExpirationDate { get; set; } 

में मैं मान्य करें करना चाहते हैं तो एक पृष्ठ पर दिनांक सही स्वरूप में नहीं है। मैं जिस दिनांक का उपयोग कर रहा हूं उसका प्रारूप MM/dd/yyyy है।

+2

MVC डिफ़ॉल्ट रूप से वह स्वरूप के अनुसार मान्य करेगा, यदि आप ग्राहक साइड सत्यापन की जरूरत है, आप विनीत चालू करने की आवश्यकता आपके आवेदन पर जावास्क्रिप्ट – Rab

+0

'DisplayFormatInEditMode' प्रॉपर्टी को' DisplayFormatAttribute' – asawyer

+0

@asawyer सर में 'true' पर सेट करें, यह मान्य और पृष्ठ पोस्टबैक नहीं है। मैं पोस्टबैक को रोकना चाहता हूं और प्रारूप संदेश दिखाना चाहता हूं। – Abhishek

उत्तर

18

आप DataType.Date साथ DataType विशेषता शामिल होना चाहिए। ये दोनों System.ComponentModel.DataAnnotations नामस्थान में पाए जा सकते हैं।

[Required] 
[DataType(DataType.Date)] 
[DisplayFormat(DataFormatString = "{0:MM/dd/yyyy}")] 
public DateTime? ExpirationDate { get; set; } 

This answer में कुछ और विशेषताओं भी शामिल हैं।

अपडेट किया गया क्लाइंट साइड सत्यापन सक्षम करने के लिए ASP.NET MVC4

में क्लाइंट-साइड सत्यापन सक्षम करने के निर्देश शामिल करने के लिए, तो आप इस की जरूरत है:

  1. jquery.validation प्लगइन जोड़ें पाद लेख के लिए

    <%: Scripts.Render("~/Scripts/jquery.validate.min.js") %> 
    <%: Scripts.Render("~/Scripts/jquery.validate.unobtrusive.min.js") %> 
    
  2. इस

    web.config में जोड़े
    <appSettings> 
        <add key="ClientValidationEnabled" value="true" /> 
        <add key="UnobtrusiveJavaScriptEnabled" value="true" /> 
    </appSettings> 
    
  3. इस सीएसएस का उपयोग करें जब @ Html.ValidationMessageFor का उपयोग कर() इतना है कि यह initally जावास्क्रिप्ट सत्यापन

    <style type="text/css"> 
    
    /* styles for validation helpers */ 
    .field-validation-error { 
        color: #e80c20; 
        font-weight: bold; 
    } 
    
    .field-validation-valid { 
        display: none; 
    } 
    
    input.input-validation-error { 
        border: 1px solid #e80c20; 
    } 
    
    input[type="checkbox"].input-validation-error { 
        border: 0 none; 
    } 
    
    .validation-summary-errors { 
        color: #e80c20; 
        font-weight: bold; 
        font-size: 1.1em; 
    } 
    
    .validation-summary-valid { 
        display: none; 
    } 
    
    </style> 
    
+0

क्लाइंट-साइड सत्यापन को सक्षम करने के लिए, बस अपने पाद लेख में jquery.validate प्लगइन जोड़ें: '<%: स्क्रिप्ट्स। रेंडर (" ~/स्क्रिप्ट/jquery.validate.min.js ")%><%: स्क्रिप्ट्स। प्रस्तुत करें ("~/स्क्रिप्ट/jquery.validate.unobtrusive.min.js")%> ' – truemedia

+0

सर @ ट्राउमेडिया, मैंने इस कोड को [आवश्यक (त्रुटि संदेश =" एसएस ")] [डेटाटाइप (डेटाटाइप.डेट) ] [DisplayFormat (ApplyFormatInEditMode = true, DataFormatString = "{0: MM/dd/yyyy}")] सार्वजनिक दिनांक समय? तारीख {प्राप्त करें; सेट; } – Abhishek

+0

पृष्ठ अभी भी पोस्टबैक है, भले ही इसमें कोई दिनांक और पोस्टबैक न हो, जब मैं एक साधारण पूर्णांक 345 – Abhishek

-4

आप की तरह मान्यता का उपयोग कर सकते हैं:

[Required] 
     [DisplayFormat(DataFormatString = "{0:d}")] 
     public DateTime? ExpirationDate { get; set; } 

मुझे लगता है कि यह काम करेगा

+0

कोई सर पेज पोस्टबैक अगर मैं 12345 टाइप करता हूं और फॉर्म या किसी अमान्य तिथि जमा करता हूं। – Abhishek

4

कस्टम सत्यापन दिनांक स्वरूप मैन्युअल हल किया जाना चाहिए के माध्यम से छिपा हुआ है और प्रदर्शित करता है।

ग्राहक सत्यापन संबंधी समस्याएं jquery.validate.unobtrusive.min.js जो किसी भी तरह से में दिनांक/दिनांक प्रारूप को स्वीकार नहीं करता में MVC बग (MVC 5 में भी) की वजह से हो सकता है। यह डेटपिकर और न ही ब्राउज़र के कारण होता है। दुर्भाग्य से आपको इसे मैन्युअल रूप से हल करना होगा।

मेरे अंत में काम कर समाधान:

@Scripts.Render("~/Scripts/jquery-3.1.1.js") 
@Scripts.Render("~/Scripts/jquery.validate.min.js") 
@Scripts.Render("~/Scripts/jquery.validate.unobtrusive.min.js") 
@Scripts.Render("~/Scripts/moment.js") 

आप पल स्थापित कर सकते हैं:

आप से पहले शामिल करने के लिए की है।जे एस का उपयोग कर:

Install-Package Moment.js 

और फिर आप अंत में दिनांक स्वरूप पार्सर के लिए ठीक जोड़ सकते हैं:

$(function() { 
    $.validator.methods.date = function (value, element) { 
     return this.optional(element) || moment(value, "DD.MM.YYYY", true).isValid(); 
    } 
}); 
+0

आप कोड का अंतिम टुकड़ा कहां डालते हैं? में उदाहरण के लिए – w0051977

+0

... ... – lukyer

+0

यह मेरा दिन का समाधान। धन्यवाद @ लूकर! – ClownCoder