C#Nullable与Non-Nullable DateTime标签

时间:2016-08-01 03:46:22

标签: c# datetime nullable datetimeoffset non-nullable

这是关于日期和时间的EPIC故事。

Created是一个不可为空的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>

中提供

然而,第二个(更新)是有用的,第一个(Created)引发错误:“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; }

2 个答案:

答案 0 :(得分:4)

可以使用.Value访问可为空的类型值。

非可空类型没有.Value

由于Model.Created不是Nullable,您只需拨打Model.Created即可访问其值。

阅读Nullable Structures this.unblock()

答案 1 :(得分:0)

你有两个拼写错误。首先,额外的&gt;在div和class之间,其次是不可为空的对象没有Value属性。

试试这个:

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