简单的问题 - 这是允许的吗?如果是的话,我该怎么做?
举个例子,说我有以下内容:
namespace Model.Event{
public class Type1{
[UIHint("Child")]
public Child Child{ get; set; }
[UIHint("AnotherClass")]
public Model.Event.SubNameSpace.AnotherClass AnotherClass{ get; set; }
[UIHint("Child")]
Public Model.Event.SubNameSpace.Child Child2{ get; set; }
}
public class Child{
public string SomeText{ get; set; }
}
}
namespace Model.Event.SubNameSpace{
public class AnotherClass{
public string SomeText2{ get; set; }
}
public class Child{
public string SomeText2{ get; set; }
}
}
并且在Views / Shared中我有以下结构:
查看/共享/ DisplayTemplates /型号/活动/ Type1.ascx
@Model Model.Event.Type1
@DisplayFor(x=>x.Child)
@DisplayFor(x=>x.AnotherClass)
@DisplayFor(x=.x.Child2)
查看/共享/ DisplayTemplates /型号/活动/ Child.ascx
@Model Model.Event.Child
@DisplayFor(x=>x.SomeText)
查看/共享/ DisplayTemplates /型号/活动/子名字空间/ AnotherClass.ascx
@Model Model.Event.SubNameSpace.AnotherClass
@DisplayFor(x=>x.SomeText2)
查看/共享/ DisplayTemplates /型号/活动/子名字空间/ Child.ascx
@Model Model.Event.SubNameSpace.Child
@DisplayFor(x=>x.SomeText2)
然后我创建一个ViewModel:
public class MyViewModel(){
[UIHint("Type1")]
public Model.Event.Type1 {get; set; }
}
然后在视图中我想说
@Model Model.Event.Type1
@DisplayFor(x=>x.Child)
我希望它然后给我Type1.ascx 并且由于UIHint属性,给我一些子视图 - 这有意义吗?
答案 0 :(得分:0)
不是真的。看TemplateHelpers.modeViewPaths
。它是硬编码的static
。
但是,每个控制器可以单独DisplayTemplates
。
进一步考虑,这确实通过视图引擎,所以使用吐线和胶带你可能能够使它工作。但是,因为你没有在那里得到模型元数据,所以会很麻烦。