36

我的视图模型中有一个属性,如下所示:

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

8 回答 8

45

如果你不能让它在模型上工作,你可以在视图上试试。

@Html.TextBoxFor(m => m.ValidFrom, "{0:dd/MM/yyyy}", new {maxlength = 10})
于 2014-01-15T10:37:36.390 回答
12

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

希望这可以帮助。

于 2013-05-23T09:04:59.723 回答
6

由于您想排除获取 Only Date 的时间:在 Model:-

 [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

于 2015-04-18T09:05:31.790 回答
2

您必须将类型注释为 Date

[DataType(DataType.Date)]
于 2017-12-20T18:33:39.947 回答
1

在我的例子中,一个队友定义了一个全局显示模板(又名~\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; }
于 2017-09-29T22:19:28.567 回答
0

这对我有用:

在模型中:

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>
于 2016-12-02T15:25:30.683 回答
0

我在日期选择器上遇到了类似的问题,它以错误的顺序显示日期。通过使用 HTML 5 值字段修复它。 https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input/date

<input asp-for="From" type="text" class="pickadate picker__input" value="@Model?.From.ToString("MM/dd/yyyy")">
于 2020-03-05T13:37:50.103 回答
-3

您需要显示名称中的 var 名称:
[Display(Name = " MovementDate ")]
public DateTime MovementDate { get; 放; }

[Editable(false)]
[Display(Name = "MovementDate")]
[DisplayFormat(DataFormatString = "{0:yyyy/MM/dd}", ApplyFormatInEditMode = true)]
public DateTime MovementDate { get; set; }
于 2017-01-23T21:58:04.543 回答