How to get .Tostring() Overloads for Nullable Datetime? ?
e.g
public DateTime BirthDate { get; set; }
In Case of above Code i can format BirthDate.
But in case of below Code i can't get All Overloads of .ToString() method.
public DateTime? BirthDate { get; set; }
I am actually want to apply format to BirthDate in Razor Syntax ?
E.g
<li><b>BirthDate</b> : @Model.BirthDate.ToString("dd/MM/yyyy")</li> // But this is not working.
How to applying format for BirthDate in case of Nullable ?
You can use null-conditional Operators (available since C# 6.0).
string s = BirthDate?.ToString("dd/MM/yyyy");
This returns null if BirthDate has no value (is null), i.e. ToString will not be called in this case. If you want to return a text in this case instead, you can use the null-coalescing operator
string s = BirthDate?.ToString("dd/MM/yyyy") ?? "none";
or you can use the ternary conditional operator (works with older C# versions)
string s = BirthDate.HasValue ? BirthDate.Value.ToString("dd/MM/yyyy") : "none";
or with the newer pattern matching (C# 7.0)
string s = BirthDate is DateTime d ? d.ToString("dd/MM/yyyy") : "none";
In Razor, apply this in parentheses (the ? seems to confuse Razor):
<li><b>BirthDate</b> : @(Model.BirthDate?.ToString("dd/MM/yyyy"))</li> 
or
<li>
    <b>BirthDate</b> : @(BirthDate.HasValue ? BirthDate.Value.ToString("dd/MM/yyyy") : "")
</li> 
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With