Asp.net MVC DisplayTemplate子文件夹

时间:2011-01-07 16:09:17

标签: asp.net-mvc

简单的问题 - 这是允许的吗?如果是的话,我该怎么做?

举个例子,说我有以下内容:

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属性,给我一些子视图 - 这有意义吗?

1 个答案:

答案 0 :(得分:0)

不是真的。看TemplateHelpers.modeViewPaths。它是硬编码的static

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

进一步考虑,这确实通过视图引擎,所以使用吐线和胶带你可能能够使它工作。但是,因为你没有在那里得到模型元数据,所以会很麻烦。