Tengo problemas para mostrar la única parte de fecha de DateTime en un cuadro de texto usando TextBoxFor <,> (expresión, htmlAttributes).
El modelo se basa en Linq2SQL, el campo es un DateTime en SQL y en el modelo de entidad.
Ha fallado:
<%= Html.TextBoxFor(model => model.dtArrivalDate, String.Format("{0:dd/MM/yyyy}", Model.dtArrivalDate))%>
Este truco parece estar depreciado, cualquier valor de cadena en el objeto htmlAttribute se ignora.
Ha fallado:
[DisplayFormat( DataFormatString = "{0:dd/MM/yyyy}" )]
public string dtArrivalDate { get; set; }
Me gustaría almacenar y mostrar solo la parte de fecha en la vista de detalles / edición, sin la parte "00:00:00".
asp.net-mvc
Kronos
fuente
fuente
@Html.EditorFor(m => m.IssueDate)
y el formato en el modelo se aplica como[DisplayFormat(DataFormatString = "{0:dd/MM/yyyy}" )]
pero la fecha todavía se muestra como01/01/0001 12:00:00 AM
MVC4 ha resuelto este problema agregando una nueva
TextBoxFor
sobrecarga, que toma un parámetro de formato de cadena. Ahora puede simplemente hacer esto:También hay una sobrecarga que toma atributos html, por lo que puede configurar la clase CSS, seleccionar los datepickers, etc.
fuente
@Html.TextBoxFor(m => m.SomeDate, "{0:MM/dd/yyyy}", new { @id="datepicker" })
[DisplayFormat]
atributo del modelo . Me alegra que haya al menos una anulación en TextBoxFor (y que me haya avisado).@Html.TextBoxFor(model => model.CDate, "{0:dd.MM.yyyy}")
pero en httpPost obtengo datos como MM.dd.aaaa. ¿Cómo resolver esto?input[type=date]
especificaciones requieren"{0:yyyy-MM-dd}"
formato.fuente
@Value = (Model.DateBecamePermanentResident == null ? "" : Model.DateBecamePermanentResident.Value.ToString("dd.MM.yyyy"))
O use los ayudantes sin tipo:
fuente
@Html.TextBoxFor(model => model.EndDate, "{0:d}", new { type = "date" })
Esto funcionó para mí.
fuente
No tengas miedo de usar HTML sin formato.
fuente
TextBoxFor
oEditorFor
formatear el valor de todos modos. Vea mi pregunta: TextBoxPara el ayudante mezcla día y mes en fechasTL; DR;
¡Solicitar
[DisplayFormat(ApplyFormatInEditMode = true, DataFormatString = "{0:yyyy-MM-dd}")]
no funcionó para mí!Explicación:
Para mostrar una propiedad de fecha de su modelo usando
Html.TextBoxFor
:Propiedad de fecha de su clase de modelo:
No se necesita nada más en el lado del modelo.
En Razor haces:
Explicación:
La fecha de un
input
elemento de tipo htmldate
debe formatearse con respecto a ISO8601 , que es:yyyy-MM-dd
Mi experiencia es que el idioma no está determinado por el
Accept-Language
encabezado, sino por el idioma de visualización del navegador o el idioma del sistema operativo.fuente
También puede usar los atributos HTML 5 aplicando esta anotación de datos:
Pero el problema es que esto habilita un selector de fecha específico del navegador para los navegadores HTML 5. Todavía necesita su propio selector de fechas para navegadores sin soporte, y luego debe asegurarse de que su selector de fechas no aparezca además del de un navegador (Modernizr puede hacer esto fácilmente) u ocultar el navegador si lo hace (complicado y yo no sé qué tan confiables fueron los métodos que vi).
Al final, fui con Alex porque mi entorno actual no tiene Modernizr, pero si lo tuviera, lo habría usado para mostrar condicionalmente mi selector de datos si el navegador ya no era compatible.
fuente
Para mí, necesitaba mantener el
TextboxFor()
porque el usoEditorFor()
cambia el tipo de entrada hasta la fecha. Lo que, en Chrome, agrega un selector de fecha incorporado, que arruinó el jQuery datepicker que ya estaba usando. Por lo tanto, para continuar usandoTextboxFor()
AND solo generar la fecha, puede hacer esto:fuente
El atributo DisplayFormat no funcionó para mí de ninguna de las formas en la carga inicial. Creé un EditorTemplate en su lugar:
fuente
El Editor de plantillas funcionará solo con fines de visualización. Si usa el mismo editor (lo cual tiene sentido porque es un editor) y proporcionó un valor como 31/01/2010, recibirá un mensaje de error que indica que el formato no es válido.
fuente
Uso Globalize, así que trabajo con muchos formatos de fecha, así que use lo siguiente:
Esto ajustará automáticamente el formato de fecha a la configuración regional del navegador.
fuente
Tenga en cuenta que la exhibición dependerá de la cultura. Y aunque en la mayoría de los casos todas las otras respuestas son correctas, no funcionó para mí. El problema cultural también causará diferentes problemas con jQuery datepicker, si está adjunto.
Si desea forzar el escape de formato
/
de la siguiente manera:Si no se me escapó, se muestra
08-01-2010
vs. esperado08/01/2010
.Además, si no se escapó, jQuery datepicker seleccionará defaultDate diferente, en mi caso lo fue
May 10, 2012
.fuente
Si está utilizando el selector de fecha Bootstrap, puede agregar el atributo data_date_format como se muestra a continuación.
fuente
// datimetime se muestra en la fecha El marcador es 24/11/2011 12:00:00 a.m.
// puedes dividir esto por espacio y establecer el valor solo en fecha
Guión:
Margen:
Espera que esto ayude ...
fuente
Claro que puedes usar Html.EditorFor. Pero si desea usar TextBoxFor y usar el formato del atributo DisplayFormat, puede usarlo de esta manera:
o crea la siguiente extensión:
fuente
Simplemente agregue al lado de su modelo.
fuente
Cuando se utilizan ayudantes de etiqueta en ASP.NET Core, el formato debe especificarse en formato ISO. Si no se especifica como tal, los datos de entrada enlazados no se mostrarán correctamente y se mostrarán como mm / dd / aaaa sin valor.
Modelo:
Ver:
El formato también se puede especificar en la vista utilizando el atributo de formato asp.
El HTML resultante tendrá el siguiente aspecto:
fuente
Puede usar el siguiente código para imprimir el tiempo en formato HH: mm . En mi caso, el tipo de propiedad es TimeSpan. Por lo tanto, el valor viene en formato HH: mm: tt, pero tengo que mostrarlo en el formato anterior, es decir. HH: mm
fuente
Si insiste en usar el
[DisplayFormat]
, pero no está usando MVC4, puede usar esto:fuente