2011-07-06 18 views
7

tengo mi campo de modelo de decoración de la siguiente manera:ASP.NET MVC muestra la fecha sin tiempo

[DataType(DataType.Date)] 
[Display(Name = "Date of birth")] 
public string DateOfBirth { get; set; } 

Cuando quiero mostrar el valor en la vista usando el siguiente código:

<%: Html.DisplayFor(m => m.DateOfBirth) %> 

El problema es que la fecha se muestra junto con su valor de tiempo. Me pregunto por qué no tiene en cuenta el atributo DateType y solo muestra el valor de la fecha sin tiempo. Sé que puedo crear una plantilla de visualización para DateTime, pero en otros casos que no sean la fecha de nacimiento, quiero mostrar la hora junto con la fecha. ¿Como resolver el problema?

Respuesta

9

Esto debe hacerlo por el modo de edición y visualización

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

aunque si se acaba de mostrar, esto podría funcionar

[DisplayFormat(DataFormatString = "{0:d}")] 
+0

funcionó para mi. ¡Gracias! – Marta

+0

No es necesario en absoluto. –

+0

@MystereMan, estoy pensando que sabes en qué estás. (esto) .puede que no sea necesario, pero seguramente usted sabe que tiene que ser más específico que sus comentarios aquí. ¿Qué es lo que agregan al conocimiento general? votaré por usted, mejor respuesta. – dove

6

El problema que tiene aquí es que está utilizando un valor de cadena en lugar de un DateTime.

cambio de su modelo sea:

[DataType(DataType.Date)] 
[Display(Name = "Date of birth")] 
public DateTime? DateOfBirth { get; set; } 

Tipo de datos sólo funcionará si se trata de un tipo DateTime, que también consigue la ventaja añadida de que se validará automáticamente como una fecha válida cuando se utiliza un DateTime. Si usa una cadena, deberá usar un validador de expresiones regulares para asegurarse de que se haya ingresado una fecha adecuada.

+0

Tuve una cita recientemente donde Chrome puso cosas divertidas cuando el tipo de entrada es la fecha, parte de html5, creo, quise usar jquery datepicker, así que fui con DataType.Text, eso aún me permitió usar el formato lo suficientemente genial – John

+0

@ John - "cosas divertidas"? Eso es parte del estándar html. Si está utilizando html5, debe usar los tipos de entrada html5. Lo más probable es que no haya entendido algo, y en lugar de hacer lo correcto, ahora ha roto el manejo de la fecha de MVC. –

+0

no, me refiero a que Chrome agrega datapickers que no se ven tan bien como las versiones de jquery, que prefiero – John

4

Puede utilizar ToShortDateString() o ToLongDateString() para mostrar la fecha solamente, ejemplo:

@Model.EventDate.ToShortDateString() 
@Model.EventDate.ToLongDateString() 
Cuestiones relacionadas