2016-08-01 63 views
0

這是關於日期和時間的EPIC故事。C#可空與不可空N日期時間標記

創建是一個不可爲空的DateTimeOffset變量 更新是一個可爲空的DateTimeOffset兩個變量

值已被正確創建,存在於數據庫和已傳遞給視圖。因此,這兩個值應該在以下內容中可用:<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>

然而,第二個(更新)是很好的去,第一個(創建)引發錯誤:「ValueExtensions.Value(HtmlHelper,string)'是一種方法,在給定的上下文中無效「

它發生在.value部分。 爲什麼一個好,另一個不好?變量的可空性與它的可接受性有什麼關係?或者讓方法'在給定的上下文中無效'?

我的模型:

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

回答

4

空類型的值可以用.Value訪問。

非空值類型沒有.Value

由於Model.Created不是空值,只需調用Model.Created即可訪問它的值。

閱讀可空結構here

0

你有兩個錯字。首先額外>在div和class之間,其次不可爲空的對象不具有Value屬性。

試試這個:

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

嗯,好抓的兩個部分。不知道'>'是如何進入的。 –