[英]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.