【发布时间】:2014-10-01 19:12:20
【问题描述】:
有时,在 Razor 视图中,我正在做类似以下的事情:
@Model.SomeDate1.ToString("MM/dd/yyyy")
这有时有效,有时它会给我一个错误,关于 ToString 没有重载需要 1 个参数。我找到的答案与这里找到的类似: 'No overload for method 'ToString' takes '1' arguments' error occur While Formatting Datetime Field To String ON "dd-MM-yyyy" format
我知道什么时候出现这个错误,我可以随时修改我的语句为
@Model.SomeDate2.Value.ToString("MM/dd/yyyy")
它会起作用的。我的问题是,为什么在这种情况下会发生这种情况?这些属性同时在同一对象上以相同类型(不可为空的 DateTime)通过,从同一数据库中的同一表填充。只有一个在.ToString() 之前需要.Value,而另一个不需要。这是为什么呢?
【问题讨论】:
-
SomeDate1的类型是什么?不是DateTime?吗? -
确定其中一个属性是
Nullable<DateTime>(DateTime?)。只有这样你才会得到错误。 -
DateTime没有Value属性。您的财产是DateTime?。 -
你确定它们是同一类型吗?
.Value仅适用于可为空的DateTime? -
Habib(编辑:和其他所有人),你是对的。实际上,在 .ToString() 之前需要 .Value 的那个是可为空的 DateTime。不可为空的 DateTime 无需先使用 .Value 即可访问 ToString。显然我只是选择性地对问号视而不见。 Habib,如果您将其作为答案发布,我将很乐意接受。
标签: c# asp.net-mvc razor