2013-07-09 12 views
6

Moim zdaniem mam pole daty (który używany Jquery Date Picker)Jak usunąć część czasu od zmiennej DateTime w MVC

@if (Model != null) 
{ 
    if (Model.SubmitStartDate == DateTime.MinValue) 
    { 
    Model.SubmitStartDate = null; 
    }      
    @Html.TextBoxFor(m => m.SubmitStartDate , new { @Id = "SubmitStartDate", @readonly = "readonly", @Value = @Model.SubmitStartDate}) 
} 

w moim modelu mam:

[Required(ErrorMessage = "Please select a start date")] 
[DisplayFormat(DataFormatString = "{0:d}")] 
public DateTime? SubmitStartDate { get; set; } 

Jednak w interfejsie użytkownika otrzymuję 10/07/2013 00:00:00 po załadowaniu, Jak mogę usunąć część czasu z tego. Również wymagam daty w formacie "dd-mm-rr". Czy można to osiągnąć?

UPDATE

edytowany mój kod, jak na odpowiedzi i mam to działało jak na wymagania, jednak mam problem.

Gdy używam @Html.EditorFor(), moja własność readonly nie będzie działać. Próbowałem też z DisplayFor, ale to nie ma sensu, ponieważ użyłem go do zapytania J-Wybór daty. Czy jest jakiś sposób, aby uczynić to pole tylko do odczytu?

aktualizowane Kod:

@if (Model != null) 
{ 
    if (Model.SubmitStartDate == DateTime.MinValue) 
    { 
    Model.SubmitStartDate = null; 
    }      
    @Html.EditorFor(m => m.SubmitStartDate , new { type = "date", @Id = "SubmitStartDate", @readonly = "readonly", @Value = @Model.SubmitStartDate}) 
} 

Odpowiedz

15

Używasz @Html.TextBoxFor() pomocnika, który będzie ignorować atrybut DisplayFormat. Zmień go na @Html.EditorFor(), a zostanie zastosowany formularz DisplayFormat.

I aby uzyskać format:

[DisplayFormat(ApplyFormatInEditMode = true, DataFormatString = "{0:dd-MM-yy}")] 
public DateTime? SubmitStartDate { get; set; } 
+3

i zmienić DataFormatString do "{0: dd-mm-rrrr}" –

+1

Tylko dla kompletności, albowiem, jeśli tylko trzeba usunąć część czasu (wiem, to nie jest jedynym wymogiem), dodaj atrybut '[DataType (DataType.Date)]' –

+0

Dzięki za odpowiedź, faktycznie działa jak urok :) jednak moja właściwość tylko do odczytu nie działa, kiedy używam Edit for '@ Html.EditorFor (m = > m.SubmitStartDate, new {type = "date", @Id = "SubmitStartDate", @readonly = "readonly", @Value = @ Model.SubmitStartDate}) ' – TBA

1

Oto jak ja normalnie format danych adnotacji w celu podjęcia pracy w Chrome i IE.

[DisplayFormat(DataFormatString = "{0:yyyy-MM-dd}", ApplyFormatInEditMode = true)] 
public DateTime StartDate { get; set; } 

@Html.EditorFor(m => m.StartDate, new { type = "date" }) 
Powiązane problemy