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 属性位于 SomeDate,而不是 Value 属性,因此未被读取。

所以问题是,有没有办法告诉 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 回答