如何使用模型数据注释在EditorFor Template中显示日期格式

时间:2016-03-05 14:03:23

标签: c# asp.net-mvc datetime razor view

我为DateTime类型创建了一个EditorFor模板。如果没有值(0001-01-01),则使用当前日期。问题是它显示日期和时间。我可以将DateTime.Now.ToString()更改为DateTime.Now.ToString("yyyy-MM-dd"),但有没有办法在模型中使用[DisplayFormat(DataFormatString = "{0:yyyy-MM-dd}", ApplyFormatInEditMode = true)]等注释强制执行此操作?

DateTime.cshtml

@model DateTime

@{
    var validationAttributes = Html.GetUnobtrusiveValidationAttributes("");

    <div class="input-control text full-size" data-role="datepicker">
        @Html.TextBox("", ViewData.Model.Year > 1 ? ViewData.Model.Date.ToString() : DateTime.Now.ToString(), new RouteValueDictionary(validationAttributes))
        <button class="button"><span class="mif-calendar"></span></button>
    </div>
}

MyViewModel.cs

namespace MyProject.ViewModels
{
    public class NewRequestViewModel
    {
        public NewRequestViewModel()
        {

        }

        public int ID { get; set; }

        [Required]
        [StringLength(255)]
        public string Title { get; set; }

        [Required]
        [DisplayFormat(DataFormatString = "{0:yyyy-MM-dd}", ApplyFormatInEditMode = true)]
        public DateTime StartDate { get; set; }
    }
}

MyView.cshtml

@Html.EditorFor(model => model.StartDate)

1 个答案:

答案 0 :(得分:0)

如果您不需要时间数据,则可以更改表格列类型。

您可以在替换或创建数据表列时使用此代码。 (您必须添加项目dbContext类)

protected override void OnModelCreating(DbModelBuilder modelbuilder)
{
   modelbuilder.Entity<TableName>().Property(h => h.StarDate).HasColumnType("Date").IsOptional();
}