2016-08-01 5 views
0

Ceci est une histoire EPIC sur la date et l'heure.C# Nullable vs Non-Nullable Tags DateTime

créé est une DateTimeOffset variable de non annulable Mise à jour est une variable

DateTimeOffset annulable Les valeurs des deux ont été créés correctement, existe dans la base de données et ont été transmises à la vue. Ces deux valeurs doivent donc être disponibles dans: <div class="row">@Html.Label(Model.Created.Value.ToString("MMMM, dd yyyy hh:mm tt"))</div> <div class="row">@Html.Label(Model.Updated.Value.ToString("MMMM, dd yyyy hh:mm tt"))</div>

Cependant, la seconde (mise à jour) est bonne à lancer et la première (créée) génère une erreur: "ValueExtensions.Value (HtmlHelper, string)" est une méthode , qui n'est pas valide dans le contexte donné "

Il se produit sur la partie .value. Pourquoi l'un va-t-il bien et l'autre non? Qu'est-ce que la nullité de la variable aurait à voir avec le fait qu'elle soit acceptable? ou rendre la méthode "non valide dans le contexte donné"?

Mon modèle:

public BlogPost() 
    { 
     this.Comments = new HashSet<Comment>(); 
    } 

    public int Id { get; set; } 

    public DateTimeOffset Created { get; set; } 
    public DateTimeOffset? Updated { get; set; } 

    [Required()] 
    public string Title { get; set; } 
    public string Slug { get; set; } 
    [Required()] 
    [AllowHtml] 
    public string Body { get; set; } 
    public string MediaURL { get; set; } 
    public bool Published { get; set; } 

    public virtual ICollection<Comment> Comments { get; set; } 

Répondre

4

valeurs de type Nullable est accessible avec .Value.

Les types non nullables n'ont pas .Value.

Comme Model.Created n'est pas Nullable, vous pouvez accéder à sa valeur simplement en appelant Model.Created. Lire sur les structures nulles here.

0

Vous avez deux coquilles. Premièrement, l'extra> sur le entre div et class, deuxièmement les objets non nullables n'ont pas de propriété Value.

Essayez ceci:

<div class="row"> 
    @Html.Label(Model.Created.ToString("MMMM, dd yyyy hh:mmtt")) 
</div> 
+0

Hmm, bonne prise sur les deux parties. Je ne sais pas comment le '>' est là. –