我有一个带有属性的模型,这个属性类似于:
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(我认为不太可能)?
提前致谢。
答案 0 :(得分:1)
如果您确定这将始终是DateTime:
,您可以尝试在视图上设置此格式@Html.DisplayFor(m => m.Value, "{0:dd/MM/yyyy}", new {maxlength=10})
这有效,但我建议您使用Daryl和bkaid建议的方法:https://stackoverflow.com/a/6733855/1638261
答案 1 :(得分:0)
DataType Annotation默认情况下会为您提供日期格式mm / dd / yyyy,此输入将是一个下拉列表,并与DisplayFormat结合使用,可以为您提供所需的结果。
[DataType(DataType.Date)]
[DisplayFormat(DataFormatString = "{0:dd/MM/yyyy}", ApplyFormatInEditMode = true)]