定义属性类型时是否可以指定显示模板名称?
例如,我有一些课程:
public interface IFoo {}
public class Foo : IFoo {}
public class Bar : IFoo {}
然后我有一个模型:
public class MyModel{
IFoo IFooExample {get;set;}
}
然后我想IFooExample
在我的视图中渲染:
@model MyModel
@Html.DisplayFor(x => x.IFooExample)
Foo
并且Bar
可以共享相同的显示模板,即~/Views/Shared/DisplayTemplates/IFoo.cshtml
. 如何将此逻辑插入 Mvc,这样我就不必从我的 View 调用中 a)创建Foo.cshtml
和或 b)视图( )的重载。Bar.cshtml
DisplayFor
@Html.DisplayFor(x => x.IFooExample, "IFoo.cshtml")
我也不想用 UIHint 属性来装饰我的模型。我真的很想指定有关Foo
and定义的信息Bar
:
[UIHint("IFoo.cshtml")]
public class Foo : IFoo{}
[UIHint("IFoo.cshtml")]
public class Bar : IFoo{}
但是UIHint
s不能应用于类级别。那么还有其他方法可以做到这一点吗?