jquery - now - string format datetime mvc
El valor especificado no se ajusta al formato requerido aaaa-MM-dd (5)
Tengo una aplicación .Net MVC 5 que utiliza anotaciones de datos, Entity-Framework Jquery 2.1.3 y Jquery UI 1.11.4.
Cuando renderizo un formulario de edición con una entrada de fecha de tipo usando el formato del Reino Unido "dd / MM / AAAA"; aparece el siguiente mensaje de error al usar Google Chrome:
El valor especificado ''10 / 10/2001 ''no se ajusta al formato requerido,'' aaaa-MM-dd ''. jquery-2.1.3.js: 5317
Modelo
public class MyModel
{
[Column(TypeName = "date"), DataType(DataType.Date), Display(Name = "My date")]
[DisplayFormat(DataFormatString = "{0:dd/MM/yyyy}")]
public string MyDate { get; set; }
}
Margen
<input class="text-box single-line" data-val="true" data-val-date="The field My date must be a date." id="MyDate" name="MyDate" type="date" value="10/10/2001" />
El valor se establece correctamente en el control de entrada pero la fecha no aparece en el navegador. Primero pensé que esto era un problema con jQuery, ya que aparece el archivo de script jQuery, pero al probar en IE y Firefox todo funciona bien.
Luego asumí que era mi configuración regional en Chrome, ya que Chrome cree que todos los ingleses están en Estados Unidos, cambié la configuración regional a Reino Unido y sigue apareciendo el mismo problema.
Una solución simple sería cambiar el formato de mi modelo a universal, pero para los usuarios del Reino Unido esto es un poco extraño.
¿Hay alguna manera de decirle a Chrome que acepte formatos de fecha en "dd / MM / AAAA"?
El problema podría ser del tipo = "fecha". Esa era mi situación de todos modos. Funcionó una vez que se cambió a type = "text". Si la interfaz está construida con un contenedor MVC, debe reemplazar o establecer el atributo html en consecuencia.
Establezca el atributo de
type
en texto.
@Html.TextBoxFor(m => m.MyDate, new { @type = "text" })
Las especificaciones para el selector de fecha HTML5 establecen que la fecha debe estar en el formato
yyyy-MM-dd
(formato ISO).
Esto significa que su
DisplayFormatAttribute
debe ser
[DisplayFormat(DataFormatString = "{0:yyyy-MM-dd}", ApplyFormatInEditMode = true)]
public string MyDate { get; set; }
Alternativamente, puede agregar manualmente el formato usando
@Html.TextBoxFor(m => m.MyDate, "{0:yyyy-MM-dd}", new { @type = "date" })
La opción posterior le permite mantener
DataFormatString = "{0:dd/MM/yyyy}")
para su uso en
@Html.DisplayFor()
Me gustaría resaltar algo en la respuesta aquí.
Si está creando una aplicación que tiene Globalización y Localización, entonces el método de pasar en un formato usando un ayudante Html será mejor. También puede usar EditorFor y pasar la identificación o clase necesaria para datepicker.
Puede usar InputTagHelper.Format
<input asp-for="MyDate" asp-format="{0:yyyy-MM-dd}" />