¿Por qué DisplayFormat DataFormatString no funciona?

Tengo una propiedad en mi modelo de vista de la siguiente manera:

[Editable(false)] [Display(Name = "Date")] [DisplayFormat(DataFormatString = "{0:yyyy/MM/dd}", ApplyFormatInEditMode = true)] public DateTime MovementDate { get; set; } 

Sin embargo, el margen de ganancia

  @Html.DisplayFor(modelItem => item.MovementDate)  

representa el valor de fecha como 2013/05/15 12:00:00 AM .

¿Qué estoy haciendo mal? Mi modelo:

 public class WithDateModel { [DisplayFormat(DataFormatString = "{0:yyyy/MM/dd}")] public DateTime TheDate { get; set; } public WithDateModel() { TheDate = DateTime.Now; } } 

Mi vista:

 @model ParkPay.WebTests.Models.WithDateModel @Html.DisplayFor(m => m.TheDate) @section Scripts { @Scripts.Render("~/bundles/jqueryval") } 

Lo que se renderiza:

 2013/05/25 02:23:37 AM 

¿Por qué está utilizando ApplyFormatInEditMode si ha establecido [Editable(false)] ? Todo lo que ApplyFormatInEditMode hace es formatear la fecha si la tiene en un cuadro de texto o algo para editar, que probablemente no lo hará debido a lo mencionado anteriormente.

Pude obtener la fecha para mostrar correctamente usando lo siguiente:

 [DisplayFormat(DataFormatString = "{0:yyyy/MM/dd}")] public DateTime Date { get { return DateTime.Now; } set { Date = DateTime.Now; } } 

y en la vista (con salida resultante):

 @Html.DisplayFor(x => x.Date) // 2013/05/23 
@Model.Date // 23/05/2013 09:57:56
@Html.DisplayFor(x => Model.Date) // 2013/05/23

Espero que esto ayude.

Si no puede hacerlo funcionar en el modelo, puede probarlo en la vista.

@Html.TextBoxFor(m => m.ValidFrom, "{0:dd/MM/yyyy}", new {maxlength = 10})

Dado que desea excluir el tiempo para obtener la Fecha única : En el modelo: –

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

En Vistas: –

  @Html.DisplayFor(model=> model.TheDate) @Html.JQueryUI().DatepickerFor(model => model.TheDate) 

El tutorial del siguiente enlace puede ayudarte. Funciona para mí.

http://ilyasmamunbd.blogspot.com/2014/02/jquery-ui-datepicker-popup-calendar.html

Debe anotar el tipo como Fecha

 [DataType(DataType.Date)] 

Este trabajo para mí:

En el modelo:

 using System.ComponentModel.DataAnnotations; namespace Athlete.Models { public class Foo { [DisplayFormat(DataFormatString = "{0:MM/dd/yyyy}")] public DateTime SignDate { get; set; } } } 

Y en la vista:

 @Html.DisplayFor(modelItem => item.SignDate) 

Necesita el nombre var en el Nombre para mostrar:
[Mostrar (Nombre = ” FechaMovimiento “)]
public DateTime MovementDate {get; conjunto; }

 [Editable(false)] [Display(Name = "MovementDate")] [DisplayFormat(DataFormatString = "{0:yyyy/MM/dd}", ApplyFormatInEditMode = true)] public DateTime MovementDate { get; set; } 

En mi caso, un compañero de equipo había definido una plantilla de visualización global (también conocida como ~\Views\Shared\DisplayTemplates\DateTime.cshtml ) que no sabía que tenía prioridad sobre mi [DisplayFormat(DataFormatString = "{0:yyyy-MM-dd}")] en mi propiedad modelo.

La solución fue mover mi cadena de formato a la nueva plantilla compartida, por lo que el atributo cambia a:

 // see ~\Views\Shared\DisplayTemplates\DateMyFormat.cshtml for formatting [UIHint("DateMyFormat")] public DateTime MovementDate { get; set; }