Это означает, что вы пытаетесь манипулировать тем, что имеет ссылку, но еще не инициализировано. Первое, что нужно сделать, это проверить каждый созданный экземпляр. Используйте контрольные точки, часы, проверяйте свои значения varibale. Следить за трассировкой стека и искать точные строки и столбцы, которые создают проблему
Попробуйте:
@item.Date.ToString("dd MMM yyyy")
или вы можете использовать атрибут [DisplayFormat]
в вашей модели просмотра:
[DisplayFormat(DataFormatString = "{0:dd MMM yyyy}")]
public DateTime Date { get; set }
и в вашем представлении просто:
@Html.DisplayFor(x => x.Date)
Ниже код поможет вам
@Html.Label(@item.Date.Value.ToString("dd - M - yy"))
Попробуйте это в MVC 4.0
@Html.TextBoxFor(m => m.YourDate, "{0:dd/MM/yyyy}", new { @class = "datefield form-control", @placeholder = "Enter start date..." })
Для всего данного решения, когда вы пробуете это в современном браузере (например, FF), и вы установили правильную модель
// Model
[DataType(DataType.Date)]
[DisplayFormat(DataFormatString = "{0:dd-MM-yyyy}", ApplyFormatInEditMode = true)]
public DateTime Start { get; set; }
// View
<div class="form-group">
@Html.LabelFor(model => model.Start, htmlAttributes: new { @class = "control-label col-md-2" })
<div class="col-md-10">
@Html.EditorFor(model => model.Start, "{0:dd-MM-yyyy}", new { htmlAttributes = new { @class = "form-control"} })
</div>
</div>
mvc (5) wil render (тип [date]
<div class="col-md-10">
<input class="form-control text-box single-line" data-val="true" data-val-date="The field Start must be a date." data-val-required="The Start field is required." id="Start" name="Start" value="01-05-2018" type="date">
<span class="field-validation-valid text-danger" data-valmsg-for="Start" data-valmsg-replace="true"></span>
</div>
И браузер отобразит
] Чтобы исправить это, вам нужно изменить тип текста вместо даты (также, если вы хотите использовать свой пользовательский календарь)
@Html.EditorFor(model => model.Start, "{0:dd-MM-yyyy}", new { htmlAttributes = new { @class = "form-control", @type = "text" } })
Атрибут [DisplayFormat] используется только в EditorFor / DisplayFor, а не в необработанных HTML-API, таких как TextBoxFor. Я получил это, выполнив следующие действия:
Model:
[Display(Name = "When was that document issued ?")]
[DisplayFormat(ApplyFormatInEditMode = true, DataFormatString = "{0:d}")]
public DateTime? LiquorLicenceDocumentIssueDate { get; set; }
Вид:
<div id="IsLiquorLicenceDocumentOnPremisesYes" class="groupLongLabel">
@Html.LabelFor(m => m.LiquorLicenceDocumentIssueDate)
<span class="indicator"></span>
@Html.EditorFor(m => m.LiquorLicenceDocumentIssueDate)
<span id="validEmail"></span>
<br />
@Html.ValidationMessageFor(m => m.LiquorLicenceDocumentIssueDate)
</div>
Выход: 30/12/2011
Ссылки по теме:
В общем, письменный месяц сбрасывается как MMM, 4-значный год как yyyy, поэтому ваша строка формата должна выглядеть так: «dd MMM yyyy»
DateTime.ToString("dd MMM yyyy")
Для Razor поместите файл DateTime.cshtml в папку Views / Shared / EditorTemplates. DateTime.cshtml содержит две строки и создает TextBox с датой, отформатированной 9/11/2001.
@model DateTime?
@Html.TextBox("", (Model.HasValue ? Model.Value.ToShortDateString() : string.Empty), new { @class = "datePicker" })
Это решение:
@item.Published.Value.ToString("dd. MM. yyyy")
Before ToString () использует значение.