2011-08-03 29 views
0
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; } 
    } 
} 

-重寫DisplayFormat(DataFormatString)

@model MyBaseClass 

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

當通過以上各反對到Razor視圖我希望得到...

  • 1.23
  • 9.8

但是,Dis playFormat似乎並不與物業覆蓋一起,而不是我得到...

  • 1.23
  • 9.87

有誰知道如何解決這個問題?編輯: 對不起,還不清楚。如果我有n * Derived Classes我怎樣才能解決問題的方式,將不涉及每個類型的新文件?

回答

0

你可以寫一個自定義顯示模板(~/Views/Shared/DisplayTemplates/MyDerivedClass.cshtml):

@model MyDerivedClass   
@Html.DisplayFor(x => x.Value) 

,然後你的主Index.cshtml視圖中:

@model MyBaseClass 
@Html.DisplayForModel()