2016-08-01 20 views
0

Dies ist eine EPIC-Geschichte über Datum und Uhrzeit.C# Nullable vs Non-Nullable DateTime-Tags

Erstellt ein Nicht-Nullable-Datetime Variable Aktualisierte ein Nullable-Datetime Variable

Werte beide ordnungsgemäß erstellt worden ist, gibt es in der DB und ist zu der Ansicht geführt worden. Also sollten beide Werte innerhalb von verfügbar sein: <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>

Allerdings ist die zweite (aktualisiert) gut zu gehen und die erste (Created) zieht einen Fehler: "ValueExtensions.Value (HtmlHelper, String)" ist eine Methode , was im gegebenen Kontext nicht gültig ist. "

Es tritt auf dem .value-Teil auf. Warum ist einer in Ordnung und der andere nicht? Was würde die Nulbarkeit der Variablen damit zu tun haben, dass sie akzeptabel ist? oder die Methode im gegebenen Kontext nicht gültig machen?

My Model:

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; } 

Antwort

4

Nullable-Typ-Werte können mit .Value zugegriffen werden.

Nicht nullfähige Typen haben keine .Value.

Da Model.Created nicht Nullable ist, würden Sie einfach auf den Wert zugreifen, indem Sie Model.Created aufrufen.

Lesen Sie sich die Nullable Strukturen here.

0

Sie haben zwei Tippfehler. Erstens haben die Extras> für das Zwischendiv-Objekt und die Klasse, die zweiten Objekte, die keine Nullwerte enthalten können, keine Value-Eigenschaft.

Versuchen Sie folgendes:

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

Hmm, gut fangen an beiden Teilen. Ich bin mir nicht sicher, wie der>> da reingekommen ist. –