डेटा एनोटेशन के साथ दिनांक समय का प्रारूप असाइन करें?


99

मेरे विचार मॉडल में यह विशेषता है:

[DataType(DataType.DateTime)]
public DateTime? StartDate { get; set; }

यदि मैं तिथि प्रदर्शित करना चाहता हूं, या तिथि के साथ एक टेक्स्टबॉक्स आबाद करना है, तो मेरे पास ये हैं:

<%: Model.StartDate %>

<%: Html.TextBoxFor(m => m.StartDate) %>

जब भी तारीख प्रदर्शित होती है, यह इस प्रकार प्रदर्शित होती है: 01/01/2011 12:00:00 पूर्वाह्न

लेकिन मैं केवल 01/01/2011 को प्रदर्शित करना चाहूंगा

क्या डेटा एनोटेशन के साथ प्रदर्शन प्रारूप लागू करने का कोई तरीका है? मैं हर उस उदाहरण पर नहीं जाना चाहता जहाँ मैं एक तारीख प्रदर्शित करता हूँ, और इसे प्रारूपित करने के लिए कुछ कोड जोड़ता हूँ।


जवाबों:


149

इसके साथ टैग करने का प्रयास करें:

[DisplayFormat(ApplyFormatInEditMode = true, DataFormatString = "{0:MM/dd/yyyy}")]

बस कोशिश की है, यह अभी भी पाठ बॉक्स में समय प्रदर्शित करता है और जब यह सिर्फ पृष्ठ पर प्रदर्शित किया जाता है।
स्टीवन

3
@ उत्तर: [DataType(DataType.DateTime)]यदि आप पहले से ही नहीं है तो क्या आप हटाने की कोशिश कर सकते हैं ?
डेविड फॉक्स

8
DisplayFormatकेवल EditorForऔर DisplayForसहायकों के साथ काम करता है ।
12 Г И О И О

1
शानदार जवाब - मुझे "ApplyFormatInEditMode" का परमात्मा याद आ रहा था।
कोडह्रक

5
मैं इसे Html.TextBoxFor में प्रारूप पैरामीटर द्वारा हल करने में सक्षम था। इसे सेट करके @Html.TextBoxFor(model => model.YOUR_DATE, "{0:MM/dd/yyyy}")मैं केवल प्रदर्शित होने की तिथि प्राप्त करने में सक्षम था। यह यहां मिला [ stackoverflow.com/a/14529347/2938775]
कैफिनियस

44

क्या आपने यह कोशिश की?

[DataType(DataType.Date)]

2
यदि ब्राउज़र इसका समर्थन करता है, तो यह HTML5 तिथि चयनकर्ता समर्थन को भी सक्षम करेगा।
एरोनल्स

24

Mvc 4 में आप इसे आसानी से उपयोग कर सकते हैं TextBoxFor

@Html.TextBoxFor(m => m.StartDate, "{0:MM/dd/yyyy}", new { @class = "form-control default-date-picker" })

इसलिए, आपको मॉडल या दृश्य मॉडल वर्ग में किसी भी डेटा एनोटेशन का उपयोग करने की आवश्यकता नहीं है


हाँ, उन DataAnnotations EditorFor सहायकों के लिए बहुत अच्छा काम करते हैं, लेकिन, IEnumerable (Entity) के साथ एक कस्टम ग्रिड प्रदान करते समय आपको .TextBoxFor का उपयोग करना होगा और यह मेरा मुद्दा था। धन्यवाद
bkwdesign

22

यदि आपका डेटा फ़ील्ड पहले से ही डेटटाइम डेटाटाइप है, तो आपको [DataType(DataType.Date)]एनोटेशन के लिए उपयोग करने की आवश्यकता नहीं है ; महज प्रयोग करें:

[DisplayFormat(ApplyFormatInEditMode = true, DataFormatString = "{0:MM/dd/yyyy}")]

jQuery पर, आप कैलेंडर के लिए तारीख का उपयोग करें

    $(document).ready(function () {
        $('#StartDate').datepicker();
    });

अपने HTML पर, उपयोग करें EditorFor सहायक का :

    @Html.EditorFor(model => model.StartDate)

"यदि आपका डेटा फ़ील्ड पहले से ही डेटटाइम डेटा प्रकार है, तो आपको उपयोग करने की आवश्यकता नहीं है [DataType(DataType.Date)]" => जो मददगार था
हसन तारीक

लेकिन वेब एपीआई के लिए, प्रदर्शन प्रारूप लागू नहीं DataFormatString = "{0:MM/dd/yyyy}"किया जा रहा है (कोई 400 भी अनुरोध नहीं किया गया था शरीर का अन्य प्रारूप था {"dob":"31/12/1990"})
हसन तारेक


10

इसका उपयोग करें, लेकिन यह एक पूर्ण समाधान है:

[DataType(DataType.Date)]
[DisplayFormat(ApplyFormatInEditMode = true, DataFormatString = "{0:dd/MM/yyyy}")]


4

कमेंट करने के बाद

          // [DataType(DataType.DateTime)] 

डेटा एनोटेशन गुण का उपयोग करें:

[DisplayFormat(ApplyFormatInEditMode = true, DataFormatString = "{0:dd/MM/yyyy}")]

निम्नलिखित लिंक की STEP-7 आपको मदद कर सकती है ...

http://ilyasmamunbd.blogspot.com/2014/12/jquery-datepicker-in-aspnet-mvc-5.html


1

ये मेरे लिए सही है

[DataType(DataType.DateTime)]
[DisplayFormat(DataFormatString = "{0:dd-MM-yyyy}", ApplyFormatInEditMode = true)]

0

मॉडल निर्माण के समय नीचे कोड का उपयोग करके अपनी संपत्ति सेट करें मुझे लगता है कि आपकी समस्या हल हो जाएगी..और समय डेटाबेस में प्रकट नहीं होते हैं। आपको किसी भी एनोटेशन को जोड़ने की आवश्यकता नहीं है।

private DateTime? dob;
        public DateTime? DOB
        {
            get
            {
                if (dob != null)
                {
                    return dob.Value.Date;
                }
                else
                {
                    return null;
                }

            }
            set { dob = value; }
        }
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.