我有一个列在SQL Server命名为date_updated。在MVC应用程序中,在/Controllers/Example.cs,我有以下内容:
private DateTime _date;
public DateTime date_updated
{
get
{
return _date;
}
set
{
_date = DateTime.Now;
}
}
/编辑/视图/例子。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助手显示date_updated从SQL。
这是我想到的一个解决方案,以防对别人有所帮助。SQL中有两列:
- date_published
- date_updated
当编辑一条记录时,目标是在SQL中保持date_published的当前日期时间,并将date_updated的SQL中的日期时间更新为当前日期时间。
我修改了/Controllers/Example.cs文件,如下所示:
[Required]
[DisplayFormat(DataFormatString = "{0:MM/dd/yyyy}", ApplyFormatInEditMode = true)]
public DateTime date_published { get; set; }
[Required]
[DisplayFormat(DataFormatString = "{0:MM/dd/yyyy}", ApplyFormatInEditMode = true)]
public DateTime date_updated { get; set; }
然后我为date_published和date_updated列添加了HiddenFor HTML帮助器到/View/Example/Edit文件中。我将date_updated的值设置为System.DateTime.Now。
@Html.HiddenFor(model => model.date_published)
@Html.HiddenFor(model => model.date_updated, new { @Value=System.DateTime.Now })
查看www.example.com/App/Edit/1的源代码将包含date_published和date_updated列的隐藏HTML标记。date_published隐藏标记包含来自SQL的DateTime值。date_updated标记包含2个值,一个用于来自SQL的DateTime,另一个用于System.DateTime.Now。虽然date_updated标记中有两个值并不理想,但它实现了目标。date_published将保留SQL中的DateTime, date_updated将把SQL中的记录更新为当前的DateTime。
<input id="date_published" name="date_published" type="hidden" value="7/01/2016 1:23:27 PM" />
<input Value="08/13/2016 13:50:42" id="date_updated" name="date_updated" type="hidden" value="7/01/2016 1:23:27 AM" />