Mise en forme des champs nullable DateTime en forte Voir dactylographiée
-
02-10-2019 - |
Question
J'ai une classe personne ayant une propriété BornDate dans mon modèle défini comme
[DisplayName("Born Date")]
public DateTime? BornDate { get; set; }
J'utilise ce champ à mon avis en tant que
<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>
Le problème est que quand j'édite une instance personne la zone de texte BornDate est formaté comme
dd/MM/yyyy hh.mm.ss
alors que je voudrais formater sans la partie de temps ( « jj / mm / aaaa »). Je ne suis pas en mesure d'utiliser la méthode toString avec la chaîne de format, car il est un champ annulable.
Que puis-je faire?
La solution
Vous devriez être en mesure d'utiliser la valeur. Il suffit de le vérifier est non nul d'abord.
var displayDate = model.BornDate.HasValue ? model.BornDate.Value.ToString("yyyy") : "NoDate";
Autres conseils
Je sais ce qui est très en retard, mais je faisais des recherches un autre problème et est tombé sur cette question. Il y a une façon de montrer que la partie date qui ne nécessite pas la couche de présentation mise en forme.
[DisplayName("Born Date")]
[DataType(DataType.Date)]
public DateTime? BornDate { get; set; }
L'utilisation de ce veillera à ce que partout où vous lient à cette propriété sur votre vue, seule la date montrerez
Hope this helps quelqu'un
Pour ce faire, à votre avis, vous pouvez utiliser la syntaxe Razor, ainsi:
@Html.TextBox("BornDate", item.BornDate.HasValue ? item.BornDate.Value.ToShortDateString():"")
Vous pouvez le faire, il travaillera avec les types de modèles nullables:
@model DateTime?
@{
object txtVal = "";
if (Model.HasValue)
{
txtVal = Model.Value;
};
}
@Html.TextBoxFor(x => Model, new {Value = string.Format(ViewData.ModelMetadata.EditFormatString, txtVal))
Une autre façon que je l'ai abordé cette question en ajoutant format au TextBoxFor
@Html.TextBoxFor(model => model.BornDate, "{0:MM/dd/yyyy}", new { id = "bornDate" })