我为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)
答案 0 :(得分:0)
如果您不需要时间数据,则可以更改表格列类型。
您可以在替换或创建数据表列时使用此代码。 (您必须添加项目dbContext类)
protected override void OnModelCreating(DbModelBuilder modelbuilder)
{
modelbuilder.Entity<TableName>().Property(h => h.StarDate).HasColumnType("Date").IsOptional();
}