簡體   English   中英

毫秒被ASP.NET MVC隱藏輸入元素截斷

[英]Milliseconds are being truncated by an ASP.NET MVC Hidden Input element

我有一個呈現項目列表的View,每個項目都包含一個Date屬性。

<%:Html.HiddenFor(m => m.Items[j].Date)%>

隱藏或顯示了許多其他屬性,用戶可以針對任何項目輸入注釋並將這些注釋保存到數據庫中。 這是“批量修改”類型的視圖。

我以前使用過這些View效果很好,但是Date屬性存在問題,因為它可以這樣渲染

<input name="Items[3].Date" type="hidden" value="3/05/2012 11:56:48 AM" />

問題是我需要將DateTime用作此數據項的主鍵的一部分。 我可以截斷數據庫中的毫秒數以允許匹配,但不能保證每秒只有一個數據點。

如何確保DateTime的隱藏輸入字段保留所有屬性信息,包括毫秒部分?

你真的需要使用

<%:Html.HiddenFor(m => m.Items[j].Date)%>

為什么不保持簡單

<input type="hidden" name="Items[<%:j%>].Date" value="<%:model.Items[j].Date.ToString("dd/MM/yy/ HH:mm:ss.fffff")%>"/>

我沒有在HiddenFor字段中強制使用DateTime格式的任何成功。

DisplayFormat屬性可以強制設置DisplayFor字段的格式,但對HiddenFor字段HiddenFor

為了解決這個問題,我采用了以下的“無用技巧”-對ticks屬性進行序列化和反序列化,以確保保留真實時間。

public long DateTicks 
{ 
    get
    {
        return this.Date.HasValue ? this.Date.Value.Ticks : 0; 
    } 
    set 
    { 
        if (value == 0) 
            this.Date = null; 
        else 
            this.Date = new DateTime(value); 
    }
}

采用

<%:Html.HiddenFor(m => m.Items[j].Date.Ticks)%>

在模型的Date屬性上使用DisplayFormat屬性,並在格式字符串中說明毫秒:

[DisplayFormat(DataFormatString = "{0:yyyyMMddhhmmssfff}")]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM