Veri açıklamaları ile DateTime formatını atamak?


99

Görünüm modelimde şu özniteliğe sahibim:

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

Tarihi görüntülemek veya bir metin kutusunu tarihle doldurmak istersem, bunlara sahibim:

<%: Model.StartDate %>

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

Tarih her görüntülendiğinde, şu şekilde görüntülenir: 01/01/2011 12:00:00 AM

Ama sadece 01/01/2011 göstermek istiyorum

Veri açıklamaları içeren bir görüntüleme biçimi uygulamanın bir yolu var mı? Bir tarih görüntülediğim her örneğe gitmek ve onu biçimlendirmek için bazı kodlar eklemek zorunda kalmak istemiyorum.


Yanıtlar:


151

Şununla etiketlemeyi deneyin:

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

Bunu denedim, yine de TextBox'taki saati ve sayfada ne zaman görüntülendiğini gösteriyor.
Steven

3
@Steven: [DataType(DataType.DateTime)]Henüz yapmadıysanız kaldırmayı deneyebilir misiniz?
David Fox

8
DisplayFormatsadece EditorForve DisplayForyardımcıları ile çalışır .
Ε Г И І И О

1
Harika yanıt - "ApplyFormatInEditMode" işaretini kaçırdım.
CodeHxr

5
Bunu Html.TextBoxFor'da format parametresiyle çözebildim. Bunu olarak ayarlayarak @Html.TextBoxFor(model => model.YOUR_DATE, "{0:MM/dd/yyyy}"), sadece görüntülenecek tarihi alabildim. Bunu burada [ stackoverflow.com/a/14529347/2938775] buldum .
Caffeinius

44

Bunu denedin mi

[DataType(DataType.Date)]

2
Bu, tarayıcı destekliyorsa, HTML5 tarih seçici desteğini de etkinleştirir.
AaronLS

24

Mvc 4'te aşağıdaki gibi kolayca yapabilirsiniz TextBoxFor..

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

Bu nedenle, modelde veya görünüm model sınıfında herhangi bir veri ek açıklaması kullanmanıza gerek yoktur


Evet, bu DataAnnotations, EditorFor yardımcıları için harika çalışıyor, ancak bir IEnumerable (Of Entity) ile özel bir ızgara oluştururken .TextBoxFor kullanmanız gerekiyor ve bu benim sorunumdu. Teşekkürler
bkwdesign

22

Veri alanınız zaten bir DateTime veri türü ise, [DataType(DataType.Date)]açıklama için kullanmanız gerekmez ; sadece kullan:

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

jQuery'de takviminiz için datepicker'ı kullanın

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

HTML'nizde EditorForhelper kullanın :

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

"Veri alanınız zaten bir DateTime veri türündeyse, kullanmanız gerekmez [DataType(DataType.Date)]" => bu yardımcı oldu
Hassan Tareq

Ancak web api için görüntüleme biçimi zorlayıcı değil DataFormatString = "{0:MM/dd/yyyy}"(herhangi bir 400 hatta istek gövdesi başka bir biçime sahipti {"dob":"31/12/1990"})
Hassan Tareq

18

DataAnnotation'ı şu şekilde uygulayın:

[DisplayFormat(DataFormatString = "{0:MMM dd, yyyy}")]

10

Bunu kullanın, ancak bu tam bir çözüm:

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



1

Bu benim için çalışıyor

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

0

Model oluşturma sırasında aşağıdaki kodu kullanarak mülkünüzü ayarlayın sanırım probleminiz çözülecek ... ve zaman veritabanında görünmüyor. herhangi bir açıklama eklemenize gerek yok.

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

            }
            set { dob = value; }
        }
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.