Fecha solo de TextBoxFor()

Resuelto Kronos asked hace 14 años • 22 respuestas

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 DateTime en SQL y en el modelo de entidad.

Fallido:

<%= Html.TextBoxFor(model => model.dtArrivalDate, String.Format("{0:dd/MM/yyyy}", Model.dtArrivalDate))%>

Este truco parece estar depreciado, se ignora cualquier valor de cadena en el objeto htmlAttribute.

Fallido:

[DisplayFormat( DataFormatString = "{0:dd/MM/yyyy}" )]
public string dtArrivalDate { get; set; }

Me gustaría almacenar y mostrar solo la parte de la fecha en la vista de detalles/edición, sin la parte "00:00:00".

Kronos avatar Dec 25 '09 19:12 Kronos
Aceptado

MVC4 resolvió este problema agregando una nueva TextBoxForsobrecarga, que toma un parámetro de formato de cadena. Ahora puedes simplemente hacer esto:

@Html.TextBoxFor(m => m.EndDate, "{0:d MMM yyyy}")

También hay una sobrecarga que toma atributos html, por lo que puedes configurar la clase CSS, conectar selectores de fechas, etc.:

@Html.TextBoxFor(m => m.EndDate, "{0:d MMM yyyy}", new { @class="input-large" })
Ross McNab avatar Dec 04 '2012 11:12 Ross McNab
<%= Html.TextBoxFor(model => model.EndDate, new { @class = "jquery_datepicker", @Value = Model.EndDate.ToString("dd.MM.yyyy") })%>
Alexeyss avatar Aug 11 '2011 13:08 Alexeyss
[DisplayName("Start Date")]
[DisplayFormat(ApplyFormatInEditMode = true, DataFormatString = "{0:yyyy-MM-dd}")]
public DateTime StartDate { get; set; }

Entonces:

<%=Html.EditorFor(m => m.StartDate) %>
Kevin Craft avatar May 16 '2010 04:05 Kevin Craft