如何为可空的.Tostring()
获得Datetime?
重载?
例如
public DateTime BirthDate { get; set; }
在上述代码的情况下,我可以格式化BirthDate。
但是在以下代码的情况下,我无法获得.ToString()
方法的所有重载。
public DateTime? BirthDate { get; set; }
我实际上是想将格式应用于Razor语法中的BirthDate吗?
例如
<li><b>BirthDate</b> : @Model.BirthDate.ToString("dd/MM/yyyy")</li> // But this is not working.
在Nullable的情况下如何为BirthDate应用格式?
答案 0 :(得分:5)
您可以使用null-conditional Operators(自C#6.0起可用)。
string s = BirthDate?.ToString("dd/MM/yyyy");
如果null
没有值(为空),则返回BirthDate
,即在这种情况下不会调用ToString
。如果要在这种情况下返回文本,则可以使用null-coalescing operator
string s = BirthDate?.ToString("dd/MM/yyyy") ?? "none";
或者您可以使用ternary conditional operator(适用于较旧的C#版本)
string s = BirthDate.HasValue ? BirthDate.Value.ToString("dd/MM/yyyy") : "none";
在Razor中,将其用括号括起来(?
似乎使Razor感到困惑):
<li><b>BirthDate</b> : @(Model.BirthDate?.ToString("dd/MM/yyyy"))</li>
或
<li>
<b>BirthDate</b> : @(BirthDate.HasValue ? BirthDate.Value.ToString("dd/MM/yyyy") : "")
</li>