2

我的模型中有一个带有 BornDate 属性的 Person 类,定义为

[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>

问题是,当我使用 BornDate 文本框编辑 Person 实例时,其格式为

dd/MM/yyyy hh.mm.ss

而我想在没有时间部分的情况下格式化它(“dd/MM/yyyy”)。我无法将 toString 方法与格式字符串一起使用,因为它是一个可为空的字段。

我能做些什么?

4

5 回答 5

11

您应该能够使用价值。只需先检查它是否为空。

var displayDate = model.BornDate.HasValue ? model.BornDate.Value.ToString("yyyy") : "NoDate";
于 2010-09-10T11:20:49.437 回答
9

我知道这已经很晚了,但我正在研究另一个问题并遇到了这个问题。有一种方法只显示不需要表示层格式的日期部分。

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

使用这将确保您在视图上绑定到此属性的任何地方,只有日期会显示

希望这可以帮助某人

于 2011-01-31T11:29:30.657 回答
6

要在您的 VIEW 中执行此操作,您也可以使用 Razor 语法:

@Html.TextBox("BornDate", item.BornDate.HasValue ? item.BornDate.Value.ToShortDateString():"") 
于 2011-10-28T16:34:37.817 回答
2

您可以这样做,它将适用于 Nullable 模型类型:

@model DateTime?
@{
    object txtVal = "";
    if (Model.HasValue) 
    {
        txtVal = Model.Value;
    };
}
@Html.TextBoxFor(x => Model, new {Value = string.Format(ViewData.ModelMetadata.EditFormatString, txtVal))
于 2011-04-06T09:04:23.000 回答
0

我解决此问题的另一种方法是向 TextBoxFor 添加格式

@Html.TextBoxFor(model => model.BornDate, "{0:MM/dd/yyyy}", new { id = "bornDate" })
于 2019-06-21T13:13:44.817 回答