2016-08-29 1 views
3

私はいくつかのフィールドを持つシンプルなASP.Netページを作成しています。そのうちの1つはタイムアウト用です。私はミリ秒単位で表示したい(しかし、int/stringではなくtimepanを使いたい)。私は次のコードを書いています:フォーマットのタイムパンをTotalMillisecondsとして

<input asp-for="Entry.Interval" asp-format="{0:fff}" type="text" class="form-control"> 

しかし、ここに問題があります。この形式は期待どおりに機能しません。 TimeSpan.FromMinutes(2).ToString("fff")120000を返しますが、000を返します。 TimeSpanMillisecondsというプロパティを使用しています(この例では0ですが、TotalMillisecondsが必要です)。

TimeSpan全体を希望の単位で表示するような形式はありますか?私は実際に整数フィールドを書いて、このTimeSpanに手動でマップしたくありません。

+0

'.ToString( "FFF")を結合に使用される別のプロパティを定義することができ、' "としてフォーマット全体' TimeSpan'を返します。 fff "はフレーム/ミリ秒から3文字です。同様に、あなたが "ss"を印刷した場合、秒は2文字になります。あなたは 'TotalMilliseconds'が必要だと言っています。これは正しく、' 120000'を 'double'として与えます。あなたはどこに苦しんでいるのか分かりません。あなたの希望する出力は何ですか? –

+0

@GeoffJamesバインドする値を指定しているときは、propertyやメソッドを呼び出すことはできません。 'asp-for =" Entry.Interval "と書くと、そこから値をとり、' format'を適用してレンダリングします。次に、逆順でそれを実行し、値を解析して最終結果を返します。私は 'TotalMilliseconds'を使うことはできません。なぜなら、この場合は正しく値をレンダリングしますが、ポストバックでは解析できないからです。 –

+0

私は、ページ上に 'Entry.Interval'(2分)を' 120000'と表示しようとしていますか? 'Entry.Interval'とはどんなタイプですか? 'TimeSpan'? –

答えて

4

あなただけ

class Entry 
{ 
    public TimeSpan Interval { get; set; } 
    public int IntervalMS 
    { 
     get { return (int)Interval.TotalMilliseconds; } 
     set { Interval = TimeSpan.FromMilliseconds(value); } 
    } 
    //other stuff... 
} 

そして

<input asp-for="Entry.IntervalMs" type="text" class="form-control"> 
+1

キャストがありません。 'TotalMilliseconds'は' int'の代わりに 'double'を返します。 –

+0

@AlexZhukovskiyはそれを指摘してくれてありがとう – slawekwin

関連する問題