2011-01-07 2 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; } 
    } 
} 

и в соображениях/Shared I имеет следующую структуру:

Views/Shared/DisplayTemplates/Модель/Event/Type1.ascx

@Model Model.Event.Type1 
    @DisplayFor(x=>x.Child) 
    @DisplayFor(x=>x.AnotherClass) 
    @DisplayFor(x=.x.Child2) 

Views/Shared/DisplayTemplates/Модель/Событие/Child.ascx

@Model Model.Event.Child 
    @DisplayFor(x=>x.SomeText) 

Views/Shared/DisplayTemplates/Модель/Событие/подпространстве имен/AnotherClass.ascx

@Model Model.Event.SubNameSpace.AnotherClass 
    @DisplayFor(x=>x.SomeText2) 

Views/Shared/DisplayTemplates/Модель/Событие/подпространстве имен/Child.ascx

@Model Model.Event.SubNameSpace.Child 
    @DisplayFor(x=>x.SomeText2) 

затем создать модель представления, как:

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

, а затем в представлении я хочу сказать

Я хочу, чтобы он дал мне Type1.ascx и из-за атрибутов UIHint дайте мне представления для детей - это имеет смысл?

+0

Вы хотите вытащить элементы управления из подпапок? На основании чего? – jfar

ответ

0

Не совсем. Посмотрите на TemplateHelpers.modeViewPaths. Он жестко закодирован и static.

Однако у вас может быть отдельный DisplayTemplates на контроллер.

Дальше подумайте, что это проходит через механизм просмотра, поэтому с помощью косы и клейкой ленты вы можете заставить ее работать. Было бы грязно, хотя, так как вы не получаете метаданные модели там.

+0

Почему они ограничивают возможность структурирования шаблонов логически? что отстой :( – iwayneo

+1

Ну, ни одна функция не бесплатна. Может быть, они думали о YAGNI? Но вы могли бы запросить ее для будущей версии. –

Смежные вопросы