¿Qué hay de malo en lo siguiente?
@Convert.ToDateTime((@item.Date.ToShortDateString())," dd - M - yy")
@ item.Date se muestra el 20/11/2005 a las 12:00 a. m. y quiero mostrar el 20 de noviembre de 2011
¿Qué hay de malo en lo siguiente?
@Convert.ToDateTime((@item.Date.ToShortDateString())," dd - M - yy")
@ item.Date se muestra el 20/11/2005 a las 12:00 a. m. y quiero mostrar el 20 de noviembre de 2011
Respuestas:
Tratar:
@item.Date.ToString("dd MMM yyyy")
o puede usar el [DisplayFormat]
atributo en su modelo de vista:
[DisplayFormat(DataFormatString = "{0:dd MMM yyyy}")]
public DateTime Date { get; set }
y en su opinión simplemente:
@Html.DisplayFor(x => x.Date)
Esta es la solución:
@item.Published.Value.ToString("dd. MM. yyyy")
Antes de ToString () use Value .
@(item.DOB?.ToString("dd-MMM-yyyy"))
. O usando la propiedad HasValue - @(item.DataDate.HasValue ? item.DataDate.Value.Date.ToString("dd MMM yyyy") : null)
. En ambos casos, la propiedad debe ser datetime que admita valores NULL.
Prueba esto en MVC 4.0
@Html.TextBoxFor(m => m.YourDate, "{0:dd/MM/yyyy}", new { @class = "datefield form-control", @placeholder = "Enter start date..." })
El atributo [DisplayFormat] solo se usa en EditorFor / DisplayFor, y no en las API de HTML sin procesar como TextBoxFor. Lo hice funcionar haciendo lo siguiente,
Modelo:
[Display(Name = "When was that document issued ?")]
[DisplayFormat(ApplyFormatInEditMode = true, DataFormatString = "{0:d}")]
public DateTime? LiquorLicenceDocumentIssueDate { get; set; }
Ver:
<div id="IsLiquorLicenceDocumentOnPremisesYes" class="groupLongLabel">
@Html.LabelFor(m => m.LiquorLicenceDocumentIssueDate)
<span class="indicator"></span>
@Html.EditorFor(m => m.LiquorLicenceDocumentIssueDate)
<span id="validEmail"></span>
<br />
@Html.ValidationMessageFor(m => m.LiquorLicenceDocumentIssueDate)
</div>
Salida: 30/12/2011
Enlace relacionado:
El siguiente código te ayudará
@Html.Label(@item.Date.Value.ToString("dd - M - yy"))
Para Razor, coloque el archivo DateTime.cshtml en la carpeta Views / Shared / EditorTemplates. DateTime.cshtml contiene dos líneas y produce un TextBox con una fecha formateada el 11/9/2001.
@model DateTime?
@Html.TextBox("", (Model.HasValue ? Model.Value.ToShortDateString() : string.Empty), new { @class = "datePicker" })
No pude hacer que esto funcionara completamente según las sugerencias anteriores. La inclusión de DataTypeAttribute [DataType(DataType.Date)]
pareció resolver mi problema, consulte:
[Required]
[DataType(DataType.Date)]
[DisplayFormat(DataFormatString = "{0:d}", ApplyFormatInEditMode = true)]
public DateTime RptDate { get; set; }
@Html.EditorFor(m => m.CLPosts.RptDate)
HTH
Para toda la solución dada, cuando pruebe esto en un navegador moderno (como FF), y haya configurado el modelo correcto
// Model
[DataType(DataType.Date)]
[DisplayFormat(DataFormatString = "{0:dd-MM-yyyy}", ApplyFormatInEditMode = true)]
public DateTime Start { get; set; }
// View
<div class="form-group">
@Html.LabelFor(model => model.Start, htmlAttributes: new { @class = "control-label col-md-2" })
<div class="col-md-10">
@Html.EditorFor(model => model.Start, "{0:dd-MM-yyyy}", new { htmlAttributes = new { @class = "form-control"} })
</div>
</div>
mvc (5) se renderizará (el tipo de entrada se establece hasta la fecha según la configuración de fecha en su modelo)
<div class="col-md-10">
<input class="form-control text-box single-line" data-val="true" data-val-date="The field Start must be a date." data-val-required="The Start field is required." id="Start" name="Start" value="01-05-2018" type="date">
<span class="field-validation-valid text-danger" data-valmsg-for="Start" data-valmsg-replace="true"></span>
</div>
Y el navegador mostrará
Para solucionar esto, debe cambiar el tipo a texto en lugar de fecha (también si desea usar su calendario personalizado)
@Html.EditorFor(model => model.Start, "{0:dd-MM-yyyy}", new { htmlAttributes = new { @class = "form-control", @type = "text" } })