Шаблоны могут использоваться только с датой даты доступа к полю [duplicate]

Это означает, что вы пытаетесь манипулировать тем, что имеет ссылку, но еще не инициализировано. Первое, что нужно сделать, это проверить каждый созданный экземпляр. Используйте контрольные точки, часы, проверяйте свои значения varibale. Следить за трассировкой стека и искать точные строки и столбцы, которые создают проблему

78
задан flq 13 January 2011 в 12:06
поделиться

8 ответов

Попробуйте:

@item.Date.ToString("dd MMM yyyy")

или вы можете использовать атрибут [DisplayFormat] в вашей модели просмотра:

[DisplayFormat(DataFormatString = "{0:dd MMM yyyy}")]
public DateTime Date { get; set }

и в вашем представлении просто:

@Html.DisplayFor(x => x.Date)
214
ответ дан dasdom 28 August 2018 в 07:30
поделиться

Ниже код поможет вам

@Html.Label(@item.Date.Value.ToString("dd - M - yy"))
4
ответ дан Anjan Kant 28 August 2018 в 07:30
поделиться

Попробуйте это в MVC 4.0

@Html.TextBoxFor(m => m.YourDate, "{0:dd/MM/yyyy}", new { @class = "datefield form-control", @placeholder = "Enter start date..." })
22
ответ дан Blazemonger 28 August 2018 в 07:30
поделиться

Для всего данного решения, когда вы пробуете это в современном браузере (например, 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" } })
0
ответ дан Bunkerbuster 28 August 2018 в 07:30
поделиться

Атрибут [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

Ссылки по теме:

http://msdn.microsoft.com/en-us/library/system.componentmodel.dataannotations.displayformatattribute.applyformatineditmode.aspx

18
ответ дан Diganta Kumar 28 August 2018 в 07:30
поделиться

В общем, письменный месяц сбрасывается как MMM, 4-значный год как yyyy, поэтому ваша строка формата должна выглядеть так: «dd MMM yyyy»

DateTime.ToString("dd MMM yyyy")
2
ответ дан flq 28 August 2018 в 07:30
поделиться

Для 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" })
3
ответ дан Jules Bartow 28 August 2018 в 07:30
поделиться

Это решение:

@item.Published.Value.ToString("dd. MM. yyyy")

Before ToString () использует значение.

58
ответ дан Miroslav Holec 28 August 2018 в 07:30
поделиться
Другие вопросы по тегам:

Похожие вопросы: