【发布时间】:2016-12-20 06:03:39
【问题描述】:
我在 SQL Server 中有一个名为 date_updated 的列。在 MVC 应用程序中,在 /Controllers/Example.cs,我有以下内容:
private DateTime _date;
public DateTime date_updated
{
get
{
return _date;
}
set
{
_date = DateTime.Now;
}
}
在 /Views/Example/Edit.cshtml,我有一个 DisplayFor、EditorFor 和 HiddenFor HTML 帮助器。
@Html.DisplayFor(model => model.date_updated)
@Html.EditorFor(model => model.date_updated)
@Html.HiddenFor(model => model.date_updated)
假设今天的日期是 08/13/2016,SQL 中 ID="1" 的记录的 last_updated="07/01/2016"。 DisplayFor 和 EditorFor HTML 帮助器将显示今天的日期 (08/13/2016),而 HiddenFor HTML 帮助器将在 SQL 中显示日期 (07/01/2016)。
- DisplayFor = 08/13/2016
- EditorFor = 08/13/2016
- HiddenFor = 07/01/2016
我非常希望 DisplayFor、EditorFor 和 HiddenFor HTML 帮助程序都在 SQL 中显示日期(07/01/2016)。我不确定如何让 DisplayFor 和 EditorFor HTML 帮助程序从 SQL 中显示 date_updated。
【问题讨论】:
-
在这种情况下,为什么你在属性设置器
_date = DateTime.Now;中有这个? -
我已经放置了_date = DateTime.Now;在 setter 属性内部,这样当导航到 www.example.com/Example/Edit/1 并单击 Save 时,SQL 中的 DateTime 会更新为当前 DateTime。还有其他更适合这个目标的方法吗?
-
您声称的内容是不可能的(除非您省略了一些相关代码)。
date_updated的值只能返回DateTime.Now(或DateTime.MinValue),因为您无法设置它的值。EditorFor()和HiddenFor()在它们将显示的内容上没有区别(除非您有自定义的EditorTemplate用于 typeofDateTime)并且除非您在ModelState之后更改了控制器中的属性值值已初始化,将与DisplayFor()相同 -
谢谢各位,你们的 cmets 帮助我找到了解决方案。如果对其他人有帮助,我会回答我的问题。
标签: c# sql-server asp.net-mvc datetime