2017-05-06 10 views
8

मैं दिनांक मानों के लिए उपयोगकर्ता इनपुट को संभालने के लिए कोशिश कर रहा हूँ, मैं इस प्रारूप में इनपुट की तारीख करने के लिए संकेत करना चाहते हैं: DD/MM/वर्षनिर्दिष्ट MVC5 (दिन/माह/वर्ष) में दिनांक स्वरूप

क्या

मैंने पढ़ा है और लागू जवाब डैरिन के लिए इस सवाल में: Format datetime in asp.net mvc 4

यह मेरा दिया गया है:

Global.asax

में मैं करने की कोशिश की
(ControllerContext controllerContext, ModelBindingContext bindingContext) 
    { 
     var displayFormat = bindingContext.ModelMetadata.DisplayFormatString; 
     var value = bindingContext.ValueProvider.GetValue(bindingContext.ModelName); 

     if (!string.IsNullOrEmpty(displayFormat) && value != null) 
     { 
      DateTime date; 
      displayFormat = displayFormat.Replace 
      ("{0:", string.Empty).Replace("}", string.Empty); 
      if (DateTime.TryParse(value.AttemptedValue, CultureInfo.InvariantCulture, DateTimeStyles.None, out date)) 
      { 
       return date; 
      } 
      else 
      { 
       bindingContext.ModelState.AddModelError(
        bindingContext.ModelName, 
        string.Format("{0} is an invalid date format", value.AttemptedValue) 
       ); 
      } 
     } 

     return base.BindModel(controllerContext, bindingContext); 
    } 

प्रस्थान मॉडल में दिनांक:

[Required(ErrorMessage = "Departure date is required")] 
     [Display(Name = "Departure Date")] 
     [DataType(DataType.Date)] 
     [DisplayFormat(DataFormatString = "{0:dd/MM/yyyy}", ApplyFormatInEditMode = true)] 
     public DateTime DepartureDate { get; set; } 

ध्यान में रखते हुए: enter image description here

यह महीने के साथ (मिमी शुरू होता है:

<div class="col span-1-of-2"> 
          @Html.LabelFor(m => m.DesignVacation.DepartureDate) 
          @Html.EditorFor(m => m.DesignVacation.DepartureDate) 

         </div> 

और यह उत्पादन जब दृश्य चलाया जाता है) लेकिन मैं जो चाहता हूं वह यह प्रारूप है: डीडी/एमएम/yyyy

संपादकफ़ोर का उपयोग करके इस प्रारूप को कैसे प्राप्त करें (और यदि टेक्स्टबॉक्स के साथ संभव हो)।

उत्तर

3

अगर आप DisplayFormatAttribute.DataFormatString Property के प्रलेखन को देखो आप

हो जाता है या फ़ील्ड मूल्य के लिए प्रदर्शन स्वरूप सेट देखेंगे।

यह उल्लेख नहीं किया गया है कि यह datepicker के डिज़ाइन प्रारूप को बदल देगा, यह केवल मूल्य के प्रारूप को बदलता है। जब से तुम HTML 5 date picker से तारीख हो रही है आप अपने प्रारूप Is there any way to change input type=“date” format? बदल सकते हैं नहीं है और यह भी कुछ ब्राउज़रों HTML 5 date picker का समर्थन नहीं करता, लेकिन आप उपयोग कर सकते हैं jquery date picker

head

<link rel="stylesheet" href="//code.jquery.com/ui/1.12.1/themes/base/jquery-ui.css"> 
<script src="https://code.jquery.com/jquery-1.12.4.js"></script> 
<script src="https://code.jquery.com/ui/1.12.1/jquery-ui.js"></script> 

में इस जोड़ सकते हैं और में body

@Html.TextBoxFor(m => m.DesignVacation.DepartureDate) 

और अंत में script

जोड़ें
<script> 

    $(function(){ 

     $('#DesignVacation_DepartureDate').datepicker({ 
     dateFormat: 'dd/mm/yy' 
    }); 

}); 

</script> 
6

और [DisplayFormat] विशेषताओं के संयोजन के साथ आप EditorFor() का उपयोग कर ब्राउज़र के HTML5 डेटपिकर का उपयोग कर ब्राउज़र बना रहे हैं। विनिर्देशों की आवश्यकता है कि प्रारूप yyyy-MM-dd (आईएसओ प्रारूप) हो। करने के लिए विशेषता बदलें:

[Required(ErrorMessage = "Departure date is required")] 
[Display(Name = "Departure Date")] 
[DataType(DataType.Date)] 
[DisplayFormat(DataFormatString = "{0:yyyy-MM-dd}", ApplyFormatInEditMode = true)] 
public DateTime DepartureDate { get; set; } 

और तिथि उपयोगकर्ता के उपकरण है, जो क्या एचटीएमएल -5 datepicker के लिए है की संस्कृति में प्रदर्शित किया जाएगा।

ध्यान दें कि आपको कस्टम मॉडल बाइंडर की आवश्यकता नहीं है (तिथि आईएसओ प्रारूप में पोस्ट की जाएगी और DefaultModelBinder द्वारा सही ढंग से बाध्य होगी)।

नोट करें कि HTML-5 डेटपिकर केवल क्रोम और एज में समर्थित है, और फ़ायरफ़ॉक्स में एक सामान्य टेक्स्टबॉक्स प्रदर्शित किया जाएगा (उदाहरण के लिए)। यदि आप एक सतत UI चाहते हैं, तो यह अनुशंसा की जाती है कि आप एक jquery datepicker प्लगइन (उदा। Jquery-UI) का उपयोग करें, लेकिन आपको क्लाइंट साइड सत्यापन के लिए सत्यापनकर्ता को फिर से कॉन्फ़िगर करना होगा (उदाहरण के लिए this answer देखें)।

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