1

次のような一般的なプロパティを持つモデルがあります。

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

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

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

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

次に、PairedDateTime の表示テンプレートに次のものがあります。

 @model PairedData<DateTime>

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

問題は、DisplayFor が日付形式を適用しないことです。その理由は明らかです。DisplayFormat 属性は、Value プロパティではなく SomeDate にあるため、読み取られません。

問題は、DisplayFor に別の場所から属性を読み取るように指示する方法があるかどうかです。または、表示テンプレート内で同じ情報を手動で DisplayFor に渡す方法はありますか? または、DateTime のインスタンス化でのみ属性を Value に適用する方法はありますか (ありそうにないと思います)。

前もって感謝します。

4

2 に答える 2

1

これが常にDateTimeになることが確実な場合は、ビューでこれをフォーマットしてみてください。

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

これは機能しますが、Daryl と bkaid によって提案されたアプローチをお勧めします: https://stackoverflow.com/a/6733855/1638261

于 2016-04-07T09:35:02.653 に答える
0

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

[DataType(DataType.Date)]
[DisplayFormat(DataFormatString = "{0:dd/MM/yyyy}", ApplyFormatInEditMode = true)]
于 2016-04-08T15:13:07.480 に答える