2011-01-07 135 views
1

简单的问题 - 这是允许的吗?如果是这样,我该怎么做?Asp.net MVC DisplayTemplate子文件夹

作为一个例子,说我有以下内容:

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; } 
    } 
} 

并在查看/共享我有以下结构:

查看/共享/ 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) 

然后创建一个视图模型为:

public class MyViewModel(){ 
    [UIHint("Type1")] 
    public Model.Event.Type1 {get; set; } 
} 

,然后我想说

观点
@Model Model.Event.Type1 
    @DisplayFor(x=>x.Child) 

我希望它给我Type1.ascx 和由于UIHint属性,给我的子视图 - 这是否有道理?

+0

你想从子文件夹拉控制?基于什么? – jfar 2011-01-07 16:16:48

回答

0

不是。看看TemplateHelpers.modeViewPaths。这是硬编码和static

但是,每个控制器可以有单独的DisplayTemplates

在进一步的思考,这确实通过视图引擎,所以与吐痰和胶带,你可能会使它的工作。但是,由于你没有在那里获取模型元数据,所以会很麻烦。

+0

他们为什么会限制逻辑上能够构建模板?那么吸收:( – iwayneo 2011-01-07 16:55:19