Mostra solo la data e nessun tempo

Nel razor MVC, sto inserendo la data corrente nel database come questo ..

model.Returndate = DateTime.Now.Date.ToShortDateString(); 

Poiché il campo del database è un tipo di dati datetime e sto convertendo la data corrente in formato stringa, questo non funziona … come posso fare? Sto facendo il formato stringa perché voglio la data in mm / gg / aaaa e non in mm / gg / aaaa hh: mm: ss formato ora ..

MODIFICARE:

Nel controller che ho

 var model = new ViewModel(); model.ReturnDate = DateTime.Now; return PartialView("PartialView", model); 

Nella visione parziale, ho

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

È qui che sta visualizzando la data come Data e Ora insieme … Voglio solo la data da visualizzare. Non è il momento. Spero che questa modifica spieghi meglio.

Se il tipo di colonna è DateTime in SQL, verrà archiviato un momento in cui si passa o meno.

Sarebbe meglio salvare la data correttamente:

 model.ReturnDate = DateTime.Now; 

e quindi formattarlo quando è necessario visualizzarlo:

 @Html.Label(Model.ReturnDate.ToShortDateString()) 

O se stai usando EditorFor:

 @Html.EditorFor(model => model.ReturnDate.ToShortDateString()) 

o

 @Html.EditorFor(model => model.ReturnDate.ToString("MM/dd/yyyy")) 

Per aggiungere una proprietà al tuo modello aggiungi questo codice:

 public string ReturnDateForDisplay { get { return this.ReturnDate.ToString("d"); } } 

Quindi nel tuo PartialView:

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

MODIFICARE:

Ciao ragazzi, voglio solo chiarire questa risposta dicendo “Se si sta usando EditorFor”, significa che è necessario disporre di un modello EditorFor per il tipo di valore che si sta tentando di rappresentare.

I modelli di editor sono un ottimo modo per gestire i controlli ripetitivi in ​​MVC:

http://coding-in.net/asp-net-mvc-3-how-to-use-editortemplates/

Puoi usarli per tipi ingenui come String come ho fatto sopra; ma sono particolarmente utili per lasciare template a un set di campi di input per un tipo di dati più complicato.

Ho dovuto semplicemente gestire questo scenario da solo – ho trovato un modo davvero semplice per farlo, semplicemente annotare la tua proprietà nel modello in questo modo:

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

Nasconderà anche il pulsante dell’ora dal selettore di date.

Scusa se questa risposta è un po ‘in ritardo;)

Funziona se vuoi mostrare in un TextBox:

 @Html.TextBoxFor(m => m.Employee.DOB, "{0:dd-MM-yyyy}") 

La data / ora nella base di date non sarà affatto una versione formattata . Sarà solo la data / ora stessa. Il modo in cui visualizzi quella data / ora quando estrai il valore dal database è diverso. Ho il forte sospetto che tu voglia veramente solo:

 model.Returndate = DateTime.Now.Date; 

o possibilmente

 model.Returndate = DateTime.UtcNow.Date; 

Sì, se guardi il database utilizzando SQL Server Studio o qualsiasi altra cosa, ora vedrai mezzanotte – ma è irrilevante, e quando recuperi la data dal database e la visualizzi a un utente, puoi applicare il formato pertinente .

EDIT: per quanto riguarda la tua domanda modificata, il problema non è con il modello – è come si specifica la vista. Dovresti usare qualcosa come:

 @Html.EditorFor(model => model.Returndate.Date.ToString("d")) 

dove d è l’ identificatore di formato di data e ora standard per lo schema di data breve (il che significa che prenderà in considerazione le impostazioni culturali correnti).

È quello che ho ripetuto ripetutamente: quando visualizzi la data / ora per l’utente , è il momento di formattarlo come una data senza un orario.

EDIT: Se questo non funziona, ci dovrebbe essere un modo di decorare il modello o la vista con una stringa di formato – o qualcosa del genere. Non sono davvero una persona MVC, ma sembra che ci dovrebbe essere un buon modo per farlo in modo dichiarativo …

Puoi modificare il tuo ViewModel come di seguito:

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

Puoi applicare il formato di data e ora personalizzato usando ToString come:

 DateTime.Now.Date.ToString("MM/dd/yyyy"); 

Ulteriori letture sul modello DateTime.ToString possono essere trovate qui e qui .

Modifica: dopo la modifica della domanda, proprio come altri suggerivano di applicare il formato della data alla tua vista:

 model.Returndate = DateTime.Now.Date; @Html.EditorFor(model => model.Returndate.Date.ToString("MM/dd/yyyy")) 

Non sono sicuro in Razor ma in ASPX lo fai:

  <%if (item.Modify_Date != null) {%> <%=Html.Encode(String.Format("{0:D}", item.Modify_Date))%> <%} %> 

Ci deve essere qualcosa di simile in Rasoio. Speriamo che questo possa aiutare qualcuno.

Se hai un ciclo for come quello qui sotto.

Cambia @ item.StartDate in @ item.StartDate.Value.ToShortDateString ()

Questo rimuoverà il tempo solo nel caso in cui non è ansible annotare la tua proprietà nel modello come nel mio caso.

  @foreach (var item in Model.TestList) {  } 
Type Start Date
@item.TypeName @item.StartDate.Value.ToShortDateString()

Potresti semplicemente convertire il datetime. Qualcosa di simile a:

 @Convert.ToString(string.Format("{0:dd/MM/yyyy}", Model.Returndate)) 

Ho avuto alcuni problemi con le altre soluzioni in questa pagina, quindi ho pensato di lasciar perdere.

 @Html.TextBoxFor(m => m.EndDate, "{0:d}", new { @class = "form-control datepicker" }) 

Quindi devi solo aggiungere “{0: d}” nel secondo parametro e dovresti essere a posto.

[Display(Name = "Bill Date")] [DataType(DataType.Date)] [DisplayFormat(DataFormatString = "{0:dd/MM/yyyy}", ApplyFormatInEditMode = true)] public DateTime BillDate { get; set; }

Ora la data della tua fattura sarà mostrata come.

inserisci la descrizione dell'immagine qui