Mostrar solo fecha y sin tiempo

En la maquinilla de afeitar MVC, estoy poniendo la fecha actual en la base de datos de esta manera …

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

Como el campo de la base de datos es un tipo de datos de fecha y hora y estoy convirtiendo la fecha actual al formato de cadena, esto no funciona … ¿cómo puedo hacer esto? Estoy haciendo el formato de cadena porque quiero la fecha en formato mm / dd / aaaa y no en formato de hora mm / dd / aaaa hh: mm: ss ..

EDITAR:

En el controlador que tengo

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

En la vista parcial, tengo

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

Aquí es donde se muestra la fecha como Fecha y hora juntas … Solo quiero que se muestre la fecha. No es el momento. Espero que esta edición explique mejor.

Si el tipo de columna es DateTime en SQL, almacenará una hora en la que pase uno o no.

Sería mejor guardar la fecha correctamente:

 model.ReturnDate = DateTime.Now; 

y luego formatee cuando necesite mostrarlo:

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

O si está utilizando EditorFor:

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

o

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

Para agregar una propiedad a su modelo, agregue este código:

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

Luego en su PartialView:

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

EDITAR:

Hola chicos, solo quiero aclarar para esta respuesta que al decir ‘Si estás usando EditorFor’, eso significa que necesitas tener una plantilla EditorFor para el tipo de valor que estás tratando de representar.

Las plantillas de editor son una forma genial de administrar controles repetitivos en MVC:

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

Puedes usarlos para tipos ingenuos como String como lo hice anteriormente; pero son especialmente geniales para permitirle crear una plantilla de un conjunto de campos de entrada para un tipo de datos más complicado.

Simplemente tuve que lidiar con este escenario yo mismo, encontré una forma realmente fácil de hacerlo, simplemente anote su propiedad en el modelo de esta manera:

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

También ocultará el botón de tiempo del selector de fecha.

Lo siento si esta respuesta es un poco tarde;)

Esto funciona si quieres mostrar en un TextBox:

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

La fecha / hora en la base de datos no será una versión formateada . Simplemente será la fecha / hora misma. Cómo se muestra esa fecha / hora cuando se extrae el valor de la base de datos es una cuestión diferente. Sospecho fuertemente que realmente solo quieres:

 model.Returndate = DateTime.Now.Date; 

o posiblemente

 model.Returndate = DateTime.UtcNow.Date; 

Sí, si miras la base de datos usando SQL Server Studio o lo que sea, ahora verás la medianoche, pero eso es irrelevante, y cuando sacas la fecha de la base de datos y la muestras a un usuario, puedes aplicar el formato relevante .

EDIT: con respecto a su pregunta editada, el problema no está en el modelo, sino en cómo especifica la vista. Deberías usar algo como:

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

donde d es el especificador de formato de fecha y hora estándar para el patrón de fecha corta (lo que significa que tendrá en cuenta la configuración cultural actual).

Eso es lo que he estado diciendo repetidamente: que cuando se muestra la fecha / hora al usuario , ese es el momento de formatearlo como una fecha sin tiempo.

EDITAR: si esto no funciona, debería haber una forma de decorar el modelo o la vista con una cadena de formato, o algo así. No soy realmente una persona MVC, pero parece que debería haber una buena forma de hacerlo declarativamente …

Puede modificar su ViewModel de la siguiente manera:

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

Puede aplicar formato de fecha y hora personalizada usando ToString como:

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

Lectura adicional sobre el patrón de formatos DateTime.ToString se puede encontrar aquí y aquí .

Editar: después de la edición de su pregunta, al igual que otras sugerencias, debe aplicar el formato de fecha a su vista:

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

No estoy seguro en Razor pero en ASPX lo haces:

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

Debe haber algo similar en Razor. Espero que esto ayude a alguien.

Si tiene un bucle for como el siguiente.

Cambie @ item.StartDate a @ item.StartDate.Value.ToShortDateString ()

Esto eliminará el tiempo en caso de que no pueda anotar su propiedad en el modelo como en mi caso.

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

Simplemente podría convertir la fecha y hora. Algo como:

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

Tuve algunos problemas con las otras soluciones en esta página, así que pensé en dejar esto.

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

Entonces solo necesita agregar “{0: d}” en el segundo parámetro y debería estar listo para continuar.

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

Ahora la fecha de su factura se mostrará como.

enter image description here