2012-05-08 35 views
2

私はアイテムのリストをレンダリングするビューを持っており、各アイテムにはDateのプロパティが含まれています。ASP.NET MVC隠し入力要素によってミリ秒が切り捨てられています

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

他の多くのプロパティは表示されず、アイテムに対してコメントを入力してこれらのコメントをデータベースに保存できます。それは '一括編集'タイプのビューです。

私は良い効果を前に、これらのビューを使用しましたが、それは問題は私がパートとしてのDateTimeを使用する必要があるということです

ので

<input name="Items[3].Date" type="hidden" value="3/05/2012 11:56:48 AM" /> 
をレンダリングするので、私は日付のプロパティに問題を抱えていますこのデータ項目の主キーのデータベースのミリ秒を切り捨てて一致させることはできますが、1秒あたり1つのデータポイントしか存在しないという保証はありません。

私のDateTimeの隠し入力フィールドには、プロパティの情報(ミリ秒のコンポーネントも含む)がすべて保持されていることを確認するにはどうすればよいですか?

答えて

2

だけでなく、あなたが本当に理由だけではなく

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

私のコードを編集しました –

0

モデル内の日付プロパティにをdisplayFormat属性を使用して、フォーマット文字列でミリ秒を綴る:

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

へぇそれをシンプルに保つ

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

を使用する必要がありますか、まさにそれを指摘しようとしていました - 私にそれを打つ。同様の質問:http://stackoverflow.com/questions/9724713/html-hiddenfor-formats-datetime-incorrectly-in-asp-net –

+0

これは私にとっては役に立ちません。リンクされた質問によれば、この属性は表示フィールドには適用されますが、非表示フィールドには適用されません。 –

1

私が日時の形式を強制的に任意の成功を収めていませんしましたHiddenForフィールド。

DisplayFormat属性は、DisplayForフィールドのフォーマットを強制できますが、HiddenForフィールドには影響しません。

私は実際に時間を保持するために、tickプロパティをシリアル化して逆シリアル化することで、これを動作させるためにはかなりハックしないでください。

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); 
    } 
} 
1

使用

<%:Html.HiddenFor(m => m.Items[j].Date.Ticks)%> 
関連する問題