public abstract class MyBaseClass
{
[DisplayFormat(DataFormatString = "{0:0.00}")]
public virtual decimal Value
{
get { return 1.23456m; }
}
}
public class MyDerivedClassA : MyBaseClass
{
[DisplayFormat(DataFormatString = "{0:0.0}")]
public override decimal Value
{
get { return 9.87654m; }
}
}
...
public class MyDerivedClassZ : MyBaseClass
{
[DisplayFormat(DataFormatString = "{0:0.000}")]
public override decimal Value
{
get { return 7.654321m; }
}
}
@model MyBaseClass
@Html.DisplayFor(m => @Model.Value)
当将上面的每个to对象传递到razor视图时,我期望得到…
- 1.23 9.8
然而,DisplayFormat似乎没有覆盖随着属性,相反,我得到…
- 1.23 9.87
有人知道如何绕过这个吗?
编辑:抱歉,我没说清楚。如果我有n* Derived Classes
,我如何解决这个问题而不需要为每种类型都创建一个新文件?
您可以编写一个自定义显示模板(~/Views/Shared/DisplayTemplates/MyDerivedClass.cshtml
):
@model MyDerivedClass
@Html.DisplayFor(x => x.Value)
,然后在主Index.cshtml
视图中:
@model MyBaseClass
@Html.DisplayForModel()