2016-08-13 65 views
0

我在SQL Server中有一個名爲的日期date_updated。在MVC應用程序,在/Controllers/Example.cs,我有以下幾點:MVC控制器類中的DateTime DisplayFor,EditorFor和HiddenFor HTML幫助程序

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) 

比方說,今天的日期是2016年8月13日,並在SQL與ID =「1」的記錄已LAST_UPDATED =「2016年7月1日」。 DisplayFor和EditorFor HTML助手將顯示今天的日期(08/13/2016),HiddenFor HTML助手將在SQL中顯示日期(07/01/2016)。

  • DisplayFor = 2016年8月13日
  • EditorFor = 2016年8月13日
  • HiddenFor = 2016年7月1日

我非常喜歡DisplayFor,EditorFor和HiddenFor HTML助手全部在SQL中顯示日期(07/01/2016)。我不知道如何讓DisplayFor和EditorFor HTML幫助程序從SQL中顯示date_updated

+0

在這種情況下,你爲什麼有這樣的屬性setter'_date = DateTime.Now;'? – Rahul

+0

我已經放置_date = DateTime.Now;在setter屬性內部,以便在導航到www.example.com/Example/Edit/1並單擊Save時,SQL中的DateTime更新爲當前日期時間。有沒有更適合這個目標的其他方法? – JeremyCanfield

+0

你聲稱是不可能的(除非你省略了一些相關的代碼)。由於您無法設置其值,所以'date_updated'的值只能返回'DateTime.Now'(或'DateTime.MinValue')。並且'EditorFor()'和'HiddenFor()'在它們將顯示的內容之間沒有區別(除非您爲'DateTime'類型定製了'EditorTemplate')並且除非您更改了控制器中屬性的值在'ModelState'值初始化後,將與'DisplayFor()' –

回答

0

這是我提出的解決方案,以防萬一它幫助別人。有2列SQL:

  • date_published
  • 日期date_updated

當編輯的記錄,目的是保持當前日期時間在SQL的date_published,並更新日期時間在SQL的date_updated爲當前日期時間。

我修改了/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; } 

然後,我將HiddenFor HTML helpers添加到date_published和date_updated列的/ 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標籤中有2個值並不理想,但它實現了目標。 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" />