C# 将MVC默认日期(01/01/0001)的格式设置为空
我的剃须刀表单代码C# 将MVC默认日期(01/01/0001)的格式设置为空,c#,asp.net-mvc,date,datetime,razor,C#,Asp.net Mvc,Date,Datetime,Razor,我的剃须刀表单代码 <div class="form-group"> @Html.LabelFor(model => model.achPayDate, htmlAttributes: new { @class = "control-label col-md-7" }) @Html.DisplayFor(model => model.achPayDate, new {@class="date"}) </div> 当achPayDate=000
<div class="form-group">
@Html.LabelFor(model => model.achPayDate, htmlAttributes: new { @class = "control-label col-md-7" })
@Html.DisplayFor(model => model.achPayDate, new {@class="date"})
</div>
当achPayDate=0001-01-01T00:00:00时,显示01/01/0001,我想将日期抑制为空。如何才能做到这一点???对于普通日期时间,如果您根本不初始化它们,那么它们将匹配DateTime.MinValue,因为它是一种值类型而不是引用类型 您还可以使用可为空的DateTime,如下所示:
DateTime? MyNullableDate;
或更长的形式:
Nullable<DateTime> MyNullableDate;
您可以执行以下操作
DisplayTemplates
DisplayTemplates
文件夹下创建新视图,并将其命名为Date.cshtml
@model DateTime?
@if(Model!=null && Model!=DateTime.MinValue)
{
@string.Format("{0:MM/dd/yyyy}",Model)
}
[DataType(DataType.Date)]
public DateTime? achPayDate { get; set; }
您的型号的代码
@model DateTime?
@if(Model!=null && Model!=DateTime.MinValue)
{
@string.Format("{0:MM/dd/yyyy}",Model)
}
[DataType(DataType.Date)]
public DateTime? achPayDate { get; set; }
这种方式将使所有带有数据注释的DateTime[DataType(DataType.Date)]
遵循相同的行为,您也可以对编辑器模板执行相同的操作
您可以获得有关EditorTemplates
和DisplayTemplates
希望这将帮助您我在web网格专栏中添加了如下内容
grid.Column("Note Date",
style: "width:159px",
format: @<text>
@if (item.NoteDate == DateTime.MinValue)
{
}
else
{
@string.Format("{0:MM/dd/yyyy}", item.NoteDate)
}
</text>)
grid.Column(“注释日期”,
样式:“宽度:159px”,
格式:@
@if(item.NoteDate==DateTime.MinValue)
{
}
其他的
{
@string.Format(“{0:MM/dd/yyyy}”,item.NoteDate)
}
)
Make valuenull
OP的属性已经为空:)(并且您不能绑定字段-它们必须是属性)我让Web服务返回DateTime.MinValue,我只想将01/01/0001日期取消为空。我可以在剃须刀上添加代码吗?谢谢您的方法也会返回日期1/1/0001--FYI。@用户6815384,只要检查控制器中的值并将其设置为null
,如果它等于DateTime。MinValue
[DataType(DataType.Date)]
与模板无关(它用于在使用@Html.EditorFor(m=>m.achPayDate)时生成type=“Date”
)
在我的回答中,我重点讨论了显示模板
,并且我提到他可以应用编辑模板
,数据类型.日期
将自动使用显示模板
“Date.cshtml”如果它存在于DisplayTemplates
文件夹中,只要用户没有分配UIHint(“…”
数据类型,日期将不会自动使用模板。它与模板无关。选择模板是因为模板的名称与模型匹配(例如DateTime.cshtml
)或者由于[UIHint]
属性。[DataType(DataType.Date)]
的唯一目的是在定义了两个显示模板(Date.cshtml和datetime.cshtml)的情况下,使用EditorFor()
和标准内置模板来呈现type=“Date”
如果您使用了DataType.Date
,那么代码@Html.DisplayFor(m=>m.achPayDate)
的视图会发生什么情况?DataType.Date
与此无关。必须承认,我还没有测试过,如果您在同一文件夹中有两个显示模板,并且具有相同的@model
,则稍后将进行测试:)