Подтвердить что ты не робот

Почему DisplayFormat DataFormatString не работает?

У меня есть свойство в моей модели просмотра следующим образом:

[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
4b9b3361

Ответ 1

Если вы не можете заставить его работать с моделью, вы можете попробовать ее на экране.

@Html.TextBoxFor(m => m.ValidFrom, "{0:dd/MM/yyyy}", new {maxlength = 10})

Ответ 2

Поскольку вы хотите исключить время для получения только даты: На модели: -

 [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

Ответ 3

Почему вы используете 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

Надеюсь, что это поможет.

Ответ 4

Эта работа для меня:

В модели:

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>

Ответ 5

Вам нужно имя 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; }

Ответ 6

В моем случае товарищ по команде определил глобальный шаблон отображения (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; }

Ответ 7

Вы должны аннотировать тип как Дата

[DataType(DataType.Date)]