2016-08-01 67 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

嗯,好抓的两个部分。不知道'>'是如何进入的。 –