Форматирование обнуляемых полей DateTime в строго типизированном представлении - PullRequest
2 голосов
/ 10 сентября 2010

В моей модели есть класс Person со свойством BornDate, определенным как

[DisplayName("Born Date")]
public DateTime? BornDate { get; set; }

. Я использую это поле в своем представлении как

<td style="white-space:nowrap">
    <%= Html.LabelFor(model => model.BornDate)%>
    <br />
    <%= Html.TextBoxFor(model => model.BornDate, new { id = "bornDate" })%>
    <%= Html.ValidationMessageFor(model => model.BornDate, "*")%>
</td>

.редактирование экземпляра Person с помощью текстового поля BornDate форматируется как

dd/MM/yyyy hh.mm.ss

, в то время как я хотел бы отформатировать его без временной части ("дд / мм / гггг").Я не могу использовать метод toString со строкой формата, потому что это пустое поле.

что я могу сделать?

Ответы [ 5 ]

11 голосов
/ 10 сентября 2010

Вы должны иметь возможность использовать значение.Просто убедитесь, что он не нулевой.

var displayDate = model.BornDate.HasValue ? model.BornDate.Value.ToString("yyyy") : "NoDate";
9 голосов
/ 31 января 2011

Я знаю, что очень поздно, но я исследовал другую проблему и столкнулся с этой проблемой. Существует способ показать только часть даты, которая не требует форматирования слоя представления.

[DisplayName("Born Date")]
[DataType(DataType.Date)]
public DateTime? BornDate { get; set; }

Использование этого параметра гарантирует, что везде, где вы привязываете это свойство в вашем представлении, будет отображаться только дата

Надеюсь, это кому-нибудь поможет

5 голосов
/ 28 октября 2011

Чтобы сделать это в вашем VIEW, вы также можете использовать синтаксис Razor:

 @Html.TextBox("BornDate", item.BornDate.HasValue ? item.BornDate.Value.ToShortDateString():"") 
2 голосов
/ 06 апреля 2011

Вы можете сделать это, это будет работать с типами моделей Nullable:

@model DateTime?
@{
    object txtVal = "";
    if (Model.HasValue) 
    {
        txtVal = Model.Value;
    };
}
@Html.TextBoxFor(x => Model, new {Value = string.Format(ViewData.ModelMetadata.EditFormatString, txtVal))
0 голосов
/ 21 июня 2019

Еще один способ решения этой проблемы - добавление формата в TextBoxFor

@Html.TextBoxFor(model => model.BornDate, "{0:MM/dd/yyyy}", new { id = "bornDate" })
...