2016-04-07 4 views
1

の適用:私の表示テンプレートに続いてASP.NET MVCは、手動で私のような一般的な見て何かであるプロパティを持つモデル持ってdisplayFormatに

class SomeModel 
{ 
    [UIHint ("PairedInt")] 
    public PairedData<int> SomeInt {get;set;} 

    [UIHint ("PairedDateTime")] 
    [DisplayFormat(DataFormatString = "{0:dd/MM/yyyy}"] 
    public PairedData<DateTime> SomeDate {get;set;} 
} 

:私が持っているモデルでは

class PairedData<T> 
{ 
    public T Value {get;set;} 
    public bool IsValid {get;set;} 
} 

をPairedDateTimeの場合:

@model PairedData<DateTime> 

@Html.DisplayFor(m => m.Value) 

問題は、DisplayForに日付形式が適用されないということです。その理由は明らかです。DisplayFormat属性は、Valueプロパティではなく、読み込まれていないSomeDateにあります。

質問があるので、DisplayForに他の場所から属性を読み取るように指示する方法はありますか?または、Display Template内のDisplayForに同じ情報を手動で渡す方法がありますか?または、DateTimeインスタンシエーションでのみValueに属性を適用する方法はありますか(おそらく、私は思います)?

ありがとうございます。

答えて

1

あなたは、これは常にDateTimeのだろう確信している場合、ビューでこれをフォーマットしようとすることができます:

@Html.DisplayFor(m => m.Value, "{0:dd/MM/yyyy}", new {maxlength=10}) 

これは動作しますが、私はアプローチはダリルによって提案され、ここでbkaidあなたをお勧めします:https://stackoverflow.com/a/6733855/1638261

+0

ありがとうございます - この特定の状況で行うでしょう。私はまだもっと一般的なアプローチに興味があります。 –

+0

私の編集 – jomsk1e

+0

を参照してください実際には、動作していないようです。文字列パラメータは、日付形式ではなくテンプレート名です。 リンク先の記事で書式設定について何も表示されません。 –

0

DataType Annotationは、デフォルトでmm/dd/yyyyの日付形式を提供します。この入力はドロップダウンリストになり、DisplayFormatと組み合わせることで、探している結果が得られます。

[DataType(DataType.Date)] 
[DisplayFormat(DataFormatString = "{0:dd/MM/yyyy}", ApplyFormatInEditMode = true)] 
+0

問題は、そのアノテーションはDateTimeインスタンシエーションには適していますが、一般的に使用しています。つまり、intのためではありません。 質問が残っています - ジェネリックの異なるインスタンス化に異なる属性を適用するにはどうすればよいですか? –

関連する問題