C# 现在,当我将其设置为数据库中的对象时,只提供日期

C# 现在,当我将其设置为数据库中的对象时,只提供日期,c#,asp.net-mvc-4,datetime,entity-framework-5,C#,Asp.net Mvc 4,Datetime,Entity Framework 5,我正在使用@DateTime。现在在我的视图中保存当前日期,但不知何故,我无法为我的对象设置当前日期和小时,它不会保存小时/分钟/秒。它保存的数据与@DateTime相同。今天将显示。它只是保存为 2014-01-06 00:00:00 当日期为当前(正确)时,日期和小时设置为零 这是我的模型,没什么可看的,我不知道它怎么可能是错的 public class Posts { ... public DateTime PostDate { get; set;

我正在使用
@DateTime。现在在我的视图中
保存当前日期,但不知何故,我无法为我的对象设置当前日期和小时,它不会保存小时/分钟/秒。它保存的数据与
@DateTime相同。今天将显示。它只是保存为

2014-01-06 00:00:00

当日期为当前(正确)时,日期和小时设置为零

这是我的模型,没什么可看的,我不知道它怎么可能是错的

public class Posts
    {
        ...
        public DateTime PostDate { get; set; }
        ...

    }
下面是我如何将DateTime添加到视图中的模型:

@using (Html.BeginForm()) {
    @Html.AntiForgeryToken()
    @Html.ValidationSummary(true)

    <fieldset>

        [...]

        <input type="hidden" name="PostDate" value=@DateTime.Now/>

        <p>
            <input type="submit" value="Create"/>
        </p>
    </fieldset>
}
@使用(Html.BeginForm()){
@Html.AntiForgeryToken()
@Html.ValidationSummary(true)
[...]

}
当我调用
@DateTime.Now
时,它会在视图中显示正确的值。 我试图将其转换为字符串(通过将object
PostDate
也转换为字符串),但仍然遇到同样的问题。
我遗漏了什么?

可能行为怪异,因为您没有在值属性周围加引号。换成这个

<input type="hidden" name="PostDate" value="@DateTime.Now" />

当我遇到这个问题时,我意识到这是因为在SQL中,我在表的设计中选择了“date”而不是“datetime”。数据库无法接受时间值,因为它配置错误。更改表定义以适应完整的“日期时间”。

数据库中列的数据类型是什么?看起来列类型是
Date
,而不是
datetime
。请向我们展示呈现的HTML。很好。也可能是这样。尽管如此,我还是建议使用
Html.HiddenFor
/
Html.Hidden
,而不仅仅是添加引号,因为它们将生成正确的输出,而不会引起麻烦。
@Html.Hidden("PostDate",DateTime.Now)