Ответ 1
Если вы не можете заставить его работать с моделью, вы можете попробовать ее на экране.
@Html.TextBoxFor(m => m.ValidFrom, "{0:dd/MM/yyyy}", new {maxlength = 10})
У меня есть свойство в моей модели просмотра следующим образом:
[Editable(false)]
[Display(Name = "Date")]
[DisplayFormat(DataFormatString = "{0:yyyy/MM/dd}", ApplyFormatInEditMode = true)]
public DateTime MovementDate { get; set; }
Однако разметка
<td>
@Html.DisplayFor(modelItem => item.MovementDate)
</td>
отображает значение даты как 2013/05/15 12:00:00 AM
.
Что я делаю неправильно? Моя модель:
public class WithDateModel
{
[DisplayFormat(DataFormatString = "{0:yyyy/MM/dd}")]
public DateTime TheDate { get; set; }
public WithDateModel()
{
TheDate = DateTime.Now;
}
}
Мой взгляд:
@model ParkPay.WebTests.Models.WithDateModel
@Html.DisplayFor(m => m.TheDate)
@section Scripts {
@Scripts.Render("~/bundles/jqueryval")
}
Что получается:
2013/05/25 02:23:37 AM
Если вы не можете заставить его работать с моделью, вы можете попробовать ее на экране.
@Html.TextBoxFor(m => m.ValidFrom, "{0:dd/MM/yyyy}", new {maxlength = 10})
Поскольку вы хотите исключить время для получения только даты: На модели: -
[DisplayFormat(ApplyFormatInEditMode = true, DataFormatString = "{0:yyyy/MM/dd}"]
public DateTime TheDate { get; set; }
В Просмотров: -
@Html.DisplayFor(model=> model.TheDate)
@Html.JQueryUI().DatepickerFor(model => model.TheDate)
Учебник по следующей ссылке может помочь вам. Он работает для меня.
http://ilyasmamunbd.blogspot.com/2014/02/jquery-ui-datepicker-popup-calendar.html
Почему вы используете ApplyFormatInEditMode
, если вы установили [Editable(false)]
? Все ApplyFormatInEditMode
выполняет форматирование даты, если у вас есть это в текстовом поле или что-то для редактирования, чего вы, вероятно, не будете из-за вышеупомянутого.
Мне удалось правильно отобразить дату, используя следующее:
[DisplayFormat(DataFormatString = "{0:yyyy/MM/dd}")]
public DateTime Date
{
get
{
return DateTime.Now;
}
set
{
Date = DateTime.Now;
}
}
и в представлении (с результирующим выходом):
@Html.DisplayFor(x => x.Date) // 2013/05/23
<br />
@Model.Date // 23/05/2013 09:57:56
<br />
@Html.DisplayFor(x => Model.Date) // 2013/05/23
Надеюсь, что это поможет.
Эта работа для меня:
В модели:
using System.ComponentModel.DataAnnotations;
namespace Athlete.Models
{
public class Foo
{
[DisplayFormat(DataFormatString = "{0:MM/dd/yyyy}")]
public DateTime SignDate
{
get;
set;
}
}
}
И в представлении:
<td style="text-align:left;">@Html.DisplayFor(modelItem => item.SignDate)</td>
Вам нужно имя var в отображаемом имени:
[Показать (Name = " MovementDate" )]
public DateTime MovementDate {get; задавать; }
[Editable(false)]
[Display(Name = "MovementDate")]
[DisplayFormat(DataFormatString = "{0:yyyy/MM/dd}", ApplyFormatInEditMode = true)]
public DateTime MovementDate { get; set; }
В моем случае товарищ по команде определил глобальный шаблон отображения (aka ~\Views\Shared\DisplayTemplates\DateTime.cshtml
), который, как я понял, не имел приоритета над моим [DisplayFormat(DataFormatString = "{0:yyyy-MM-dd}")]
по свойству модели.
Решение состояло в том, чтобы переместить мою строку формата в новый общий шаблон, поэтому атрибут изменится на:
// see ~\Views\Shared\DisplayTemplates\DateMyFormat.cshtml for formatting
[UIHint("DateMyFormat")]
public DateTime MovementDate { get; set; }
Вы должны аннотировать тип как Дата
[DataType(DataType.Date)]