Если вы создаете базовую модель с свойством DateTime?(обнуляемый) при использовании DisplayNameForModel или LabelForModel будет отображаться пустой
с использованием примера приложения DotNet Core 2.2
Index.cshtml
*1007*
@model IndexPage
@{
ViewData["Title"] = "Index";
}
<style>
li > div, label { border: solid 1px black; padding: 0.1em; margin: 0.25em; }
label { border-color: grey; }
li > div:first-child:before { content: 'LabelFor: '; }
li > div:nth-child(2):before { content: 'NameFor: '; }
li > div:nth-child(3):before { content: 'DisplayFor: '; }
li.editor > div:nth-child(3):before { content: 'EditorFor: '; }
</style>
<h1>Index</h1>
<ol>
<li>
<div>@Html.DisplayNameFor(m => m.DateTimeNonNullable)</div>
<div>@Html.NameFor(m => m.DateTimeNonNullable)</div>
<div>@Html.DisplayFor(m => m.DateTimeNonNullable)</div>
</li>
<li>
<div>@Html.DisplayNameFor(m => m.DateTimeNullable)</div>
<div>@Html.NameFor(m => m.DateTimeNullable)</div>
<div>@Html.DisplayFor(m => m.DateTimeNullable)</div>
</li>
<li>
<div>@Html.DisplayNameFor(m => m.DateTimeNullableWithDisplay)</div>
<div>@Html.NameFor(m => m.DateTimeNullableWithDisplay)</div>
<div>@Html.DisplayFor(m => m.DateTimeNullableWithDisplay)</div>
</li>
<li>
<div>@Html.DisplayNameFor(m => m.DateTimeNullableWithDisplayName)</div>
<div>@Html.NameFor(m => m.DateTimeNullableWithDisplayName)</div>
<div>@Html.DisplayFor(m => m.DateTimeNullableWithDisplayName)</div>
</li>
<li class="editor">
<div>@Html.DisplayNameFor(m => m.DateTimeNonNullable)</div>
<div>@Html.NameFor(m => m.DateTimeNonNullable)</div>
<div>@Html.EditorFor(m => m.DateTimeNonNullable)</div>
</li>
<li class="editor">
<div>@Html.DisplayNameFor(m => m.DateTimeNullable)</div>
<div>@Html.NameFor(m => m.DateTimeNullable)</div>
<div>@Html.EditorFor(m => m.DateTimeNullable)</div>
</li>
<li class="editor">
<div>@Html.DisplayNameFor(m => m.DateTimeNullableWithDisplay)</div>
<div>@Html.NameFor(m => m.DateTimeNullableWithDisplay)</div>
<div>@Html.EditorFor(m => m.DateTimeNullableWithDisplay)</div>
</li>
<li class="editor">
<div>@Html.DisplayNameFor(m => m.DateTimeNullableWithDisplayName)</div>
<div>@Html.NameFor(m => m.DateTimeNullableWithDisplayName)</div>
<div>@Html.EditorFor(m => m.DateTimeNullableWithDisplayName)</div>
</li>
</ol>
IndexPage.cs
public class IndexPage
{
public DateTime DateTimeNonNullable { get; set; } = DateTime.Today;
public DateTime? DateTimeNullable { get; set; } = DateTime.Today;
[Display(Name = "DateTimeNullableWithDisplay")]
public DateTime? DateTimeNullableWithDisplay { get; set; } = DateTime.Today;
[DisplayName("DateTimeNullableWithDisplayName")]
public DateTime? DateTimeNullableWithDisplayName { get; set; } = DateTime.Today;
}
DisplayTemplates \ DateTime.cshtml
@model DateTime
@Html.LabelForModel()
<label>@Html.DisplayNameFor(m => m)</label>
<span>@Html.ValueForModel()</span>
EditorTemplates \ DateTime.cshtml
@model DateTime
@Html.LabelForModel()
<label>@Html.DisplayNameFor(m => m)</label>
<input type="datetime" id="@Html.IdForModel()" name="@Html.NameForModel()" value="@Html.ValueForModel()"/>
Отображаемое имя не отображается в элементах Nullable через LabelForModel или DisplayNameForModel (однако DisplayNameFor (m => m.Field) и LabelFor (m => m.Field) это делают, но DisplayNameFor (m => m)и LabelFor (m => m) нет) Результат