2013-07-09 18 views
6

A mio avviso ho un campo della data (che ha usato per Jquery Selezione data),Come rimuovere parte ora dalla variabile DateTime in 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}) 
} 

Nel mio modello che ho:

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

Tuttavia in UI ottengo 10/07/2013 00:00:00 in caricamento, Come posso rimuovere la parte relativa all'ora da questo. Inoltre richiedo la data nel formato "gg-mm-aa". È possibile raggiungere?

UPDATE

ho modificato il mio codice come per le risposte, e ho avuto ha funzionato secondo il requisito, ma ho avuto un problema.

Quando uso @Html.EditorFor() la mia proprietà readonly non funzionerà più. Ho provato anche con DisplayFor, tuttavia non ha senso dato che lo stavo usando per una query J Date Picker. C'è un modo per rendere quel campo solo per leggere?

Codice aggiornato:

@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}) 
} 

risposta

15

Si utilizza un aiutante @Html.TextBoxFor() che ignorerà l'attributo DisplayFormat. Cambialo in un @Html.EditorFor() e il tuo DisplayFormat verrà applicato.

E per ottenere il tuo formato:

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

e cambiare il DataFormatString "{0: gg-mm-aaaa}" –

+1

Solo per completezza: se avete solo bisogno di rimuovere la parte di tempo (lo so, questo non è il vostro unico requisito), aggiungi l'attributo '[DataType (DataType.Date)]' –

+0

Grazie per la risposta, in effetti funziona come charm :) tuttavia la mia proprietà di sola lettura non funziona più, quando uso Editfor '@ Html.EditorFor (m = > m.SubmitStartDate, new {type = "date", @Id = "SubmitStartDate", @readonly = "readonly", @Value = @ Model.SubmitStartDate}) ' – TBA

1

Ecco come io di solito formato di annotazione dei dati al fine di lavorare sia in Chrome e IE.

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

@Html.EditorFor(m => m.StartDate, new { type = "date" }) 
Problemi correlati