Estoy usando el atributo DataType.Date en mi modelo y un EditorFor en mi opinión. Esto funciona bien en Internet Explorer 8 e Internet Explorer 9 , pero en Google Chrome muestra un selector de fecha y en lugar de mostrar el valor, solo muestra "Mes / Día / Año" en texto gris desvaído.
¿Por qué Google Chrome no muestra el valor?
Modelo:
[DataType(DataType.Date)]
public Nullable<System.DateTime> EstPurchaseDate { get; set; }
Ver:
<td class="fieldLabel">Est. Pur. Date</td>
<td class="field">@Html.EditorFor(m=>m.EstPurchaseDate)</td>
fuente
[DataType(DataType.Date)]
para que no tenga que marcar todas estas propiedades por separado con el riesgo de perder algunas?En MVC5.2, agregue Date.cshtml a la carpeta ~ / Views / Shared / EditorTemplates:
fuente
Como una adición a la respuesta de Darin Dimitrov:
Si solo desea que esta línea en particular use un formato determinado (diferente del estándar), puede usarlo en MVC5:
fuente
@
al principio, que@Value = @Model.Property...
todavía necesita eso@
? ¿Te refieres a justonew { Value = Model.Property...
?En MVC 3 tuve que agregar:
Entre los usos al agregar propiedades:
Especialmente si agrega estas propiedades en un archivo .edmx como yo. Descubrí que, de manera predeterminada, los archivos .edmx no lo usan, por lo que agregar solo propiedades no es suficiente.
fuente
Si elimina
[DataType(DataType.Date)]
de su modelo, el campo de entrada en Chrome se representa comotype="datetime"
y tampoco mostrará el selector de fecha.fuente
date
. Usarlodatetime
como una solución alternativa es inapropiado, ya que no representa semánticamente los datos.Todavía tenía un problema al pasar el formato aaaa-MM-dd, pero lo solucioné cambiando el Date.cshtml:
fuente
string.Format("{0}/{1}/{2}")
de obtener eldd/mm/yyyy
formato, y funciona bien, usé el primer método de base de datos pero DisplayFormat no funcionó con clase parcial, ¿no sé por qué ?, de todos modos, si es necesario, intente este método, no lo hice No lo intente, pero si alguien lo necesita, espero que ayudeResponda a MVC4 DataType.Date EditorFor no mostrará el valor de la fecha en Chrome, está bien en IE
En el modelo, debe tener el siguiente tipo de declaración:
O
No necesita usar el siguiente atributo:
En Date.cshtml use esta plantilla:
¡Que te diviertas! Saludos, Blerton
fuente
DisplayFormat
atributo 2) Cambie la prueba para verificar si el tipo de navegador es cromo, luego haga@Html.EditorFor(m=>m.EstPurchaseDate)
3) De lo contrario, haga lo siguiente@Html.TextBox("EstPurchaseDate", dt.ToString("MM/dd/yyyy"))
: en el # 2, una mejor verificación sería si el navegador entiende HTML5, pero no sé cómo hacerlo.Si necesita tener control sobre el formato de la fecha (en otras palabras, no solo el formato aaaa-mm-dd es aceptable), otra solución podría ser agregar una propiedad auxiliar que sea de tipo cadena y agregar un validador de fecha a esa propiedad y vincular a esta propiedad en la interfaz de usuario.
Y aquí hay un validador de fechas:
fuente