3

アイテムのリストをレンダリングするビューがあり、各アイテムにはDateプロパティが含まれています。

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

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

以前にこれらのビューを効果的に使用しましたが、Dateプロパティがレンダリングされるため、問題が発生しています。

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

問題は、このデータ項目の主キーの一部としてDateTimeを使用する必要があることです。データベース内のミリ秒を切り捨てて一致を許可することはできますが、1秒あたりのデータポイントが1つだけになるという保証はありません。

DateTimeミリ秒コンポーネントを含む、プロパティのすべての情報が自分の非表示の入力フィールドに保持されるようにするにはどうすればよいですか?

4

4 に答える 4

2

本当に使う必要がありますか

<%: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")%>"/>
于 2012-05-08T05:19:29.400 に答える
1

HiddenForフィールドにDateTimeの形式を強制することに成功していません。

属性はフィールドのDisplayFormatフォーマットを強制できますが、DisplayForフィールドには影響しません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); 
    }
}
于 2012-05-08T05:12:50.757 に答える
1

使用する

<%:Html.HiddenFor(m => m.Items[j].Date.Ticks)%>
于 2012-05-08T06:46:32.250 に答える
0

モデルのDateプロパティでDisplayFormat属性を使用し、フォーマット文字列にミリ秒を入力します。

[DisplayFormat(DataFormatString = "{0:yyyyMMddhhmmssfff}")]
于 2012-05-08T00:43:02.997 に答える