2012-12-05 20 views
9

मेरे पास ASP.NET MVC3 स्थापित है। मुझे स्वरूपित तिथि के साथ डेटपिकर चाहिए। मैं इस कोशिश की, लेकिन यह काम नहीं कर रहा है (जब गुजर "{0: DD/MM/वर्ष}" प्रारूप पैरामीटर के रूप में, यह अभी भी नहीं प्रारूप करता है):आप एमवीसी 3 में TextBoxFor() द्वारा प्रदर्शित दिनांक दिनांक को कैसे प्रारूपित करते हैं?

private static MvcHtmlString FormattedDateTextBoxFor<TModel, TProperty>(this HtmlHelper<TModel> htmlHelper, Expression<Func<TModel, TProperty>> expression, string format, RouteValueDictionary htmlAttributes) 
    { 
     var metadata = ModelMetadata.FromLambdaExpression(expression, htmlHelper.ViewData); 

     if (metadata.Model != null && metadata.Model as DateTime? != null) 
      htmlAttributes.Add("value", string.Format(format, (DateTime)metadata.Model)); 

     return htmlHelper.TextBoxFor(expression, htmlAttributes); 
    } 

संपादित करें: मेरे कोड काम करता है प्रारूप "{है 0: डीडी-एमएम-yyyy} "लेकिन न केवल" {0: डीडी/एमएम/yyyy} "

मुझे पता है कि एमवीसी 4 पहले से ही यह कार्यक्षमता है, लेकिन दुर्भाग्य से मेरी परियोजना एमवीसी 3 पर लिखी गई है। क्या आप मेरी मदद कर सकते हैं?

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

यहाँ क्या यह दृश्य में क्या करना चाहिए है:

@Html.EditorFor(model => model.YourDate, new { @class = "date" }) 

यह आपको/एक तारीख dd के प्रारूप के लिए बाहर स्वरूपित देना चाहिए

+1

संभावित डुप्लिकेट [केवल टेक्स्टबॉक्स फॉर() से दिनांक (http://stackoverflow.com/questions/1961114/date-only-from-textboxfor) – KyleMit

उत्तर

1

अपने मॉडल में, निम्न का उपयोग एम एम/yyyy।

@Html.TextBoxFor(m => m.Birthdate, "{0:MM/dd/yyyy}") 
+0

शायद आपका मतलब था '[DisplayFormat (DataFormatString = "{0: dd/एम एम/yyyy} ")]'? –

+0

हां, मेरा बुरा। उसके लिए माफ़ करना। सीधे मेरे कोड से कॉपी किया और ध्यान नहीं दिया कि आपके पास थोड़ा अलग प्रारूप था। उसके लिए माफ़ करना। क्या यह काम बीटीडब्ल्यू था? – IyaTaisho

+0

और क्या आप जानते थे कि संपादक के पास htmlAttribues तर्क नहीं है! –

35

केवल प्रारूप मैं भी काम करने के लिए मिल गया है यह है @ Html.TextBoxFor (अभिव्यक्ति, स्ट्रिंग प्रारूप, वस्तु htmlAttributes)

जैसे:

@Html.TextBoxFor(x => x.DateUtc, "{0:yyyy-MM-dd HH:mm:ss}", 
      new { @class = "form-control", placeholder = "Enter Title", id="myDate"}) 
+2

यह न भूलें कि यह केवल एमवीसी 4 या बाद में काम करेगा। –

+1

** एफवाईआई **: [कई ब्राउज़र्स] (https://weblog.west-wind.com/posts/2012/nov/08/html5-input-typedate-formatting-issues) और ['इनपुट [प्रकार = तिथि] 'spec] (https://www.w3.org/TR/html-markup/input.date.html) को" {0: yyyy-MM-dd} "प्रारूप की आवश्यकता है। – KyleMit

2

यह प्रारूप आपको मदद करेगा:

@Html.TextBoxFor(Model => Model._facadeLowdown.DoB, new { @value= Model._facadeLowdown.DoB.HasValue ? Model._facadeLowdown.DoB.Value.ToString("MM/dd/yyyy") : "" 
} 
0

प्रदर्शन संस्कृति पर निर्भर करेगा। और ज्यादातर मामलों में जबकि अन्य सभी उत्तर सही हैं, यह मेरे लिए काम नहीं करता है। यदि जुड़ा हुआ है तो संस्कृति समस्या भी jQuery डेटपिकर के साथ अलग-अलग समस्याएं पैदा करेगी।

आप प्रारूप भागने/निम्नलिखित तरीके से मजबूर करने के लिए चाहते हैं:

@Html.TextBoxFor(model => model.YourDate, "{0:MM\\/dd\\/yyyy}") 

मेरे लिए बच गए नहीं तो यह दिखाने 08-01-2010 बनाम 08/01/2010 की उम्मीद।

यदि jQuery डेटपिकर से बचने के लिए भी अलग-अलग डिफ़ॉल्ट दिनांक का चयन नहीं किया जाएगा, तो मेरे उदाहरण में यह May 10, 2012 था।

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