2011-01-07 13 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) 

などのViewModel:

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

、その後ビューで、私は

言いたいです
@Model Model.Event.Type1 
    @DisplayFor(x=>x.Child) 

私はType1.ascx を私に渡したいと思いますし、UIHint属性のために子ビューを教えてください - 意味がありますか?

+0

サブフォルダからコントロールを取得しますか?何に基づいて? – jfar

答えて

0

TemplateHelpers.modeViewPathsを見てください。ハードコーディングされており、staticです。

ただし、コントローラーごとに別々のDisplayTemplatesを割り当てることができます。

さらに考えてみると、これはビューエンジンを経由するため、スピットとダクトテープでは動作させることができます。あなたがモデルのメタデータをそこに持っていないので、あなたは面倒です。

+0

なぜ彼らは論理的にテンプレートを構造化できるのかを制限しますか?それは吸う:( – iwayneo

+1

まあ、機能は無料です。おそらく彼らはYAGNIと思った?しかし、あなたは将来のバージョンのためにそれを要求することができます。 –

関連する問題