2017-02-15 19 views
0

ダウンサイトコアのリターン依存のドロップ私はContactUsQuestionsOptionと呼ばれるテンプレートを使用しているいくつかの項目を持っているし、その下に、私はいくつかのアイテムを持っていますContactUsSubQuestionOptionというテンプレートを使用します。私はContactUsPageSettingsの下で私のCMS</p> <p><a href="https://i.stack.imgur.com/W5fkN.png" rel="nofollow noreferrer"><img src="https://i.stack.imgur.com/W5fkN.png" alt="enter image description here"></a></p> <p>で次のように設定しているリスト

私は私が行うために管理しているドロップダウンリストでContactUsQuestionsOptionのすべてを返すようにしたいです。私が抱えている問題は、選択したアイテムの子のみを返す2番目のドロップダウンリストを持つことです。学部の研究と出版物を選択した場合、私はBSR、学部のお問い合わせやResearchSupportEnquiriesを示すために、2番目のドロップダウンをしたいと思う上の画像を見てみます。

[SitecoreType(AutoMap = true)] 
public class ContactUsPageSettingsViewModel : ContactUsPageSettings 
{ 
    [SitecoreQuery(".//*[@@templatekey='contactusquestionsoption']", IsLazy = false, IsRelative = true)] 
    public IEnumerable<ContactUsQuestionsOption> QuestionsOptionItems { get; set; } 

    [SitecoreQuery("./child::*", IsLazy = true, IsRelative = true)] 
    public virtual IEnumerable<ContactUsPageSettingsViewModel> Children { get; set; } 

} 

そして、このような第2のビューモデル:

私はこのようになりビューモデル有する

[SitecoreType(自動マップを=真)] パブリッククラスQuestionsViewModel:ContactUsQuestionsOption { [SitecoreQuery( ".//*[@@ templatekey = 'contactussubquestionsoption']"、IsLazy =偽、IsRelative =真)] パブリック仮想のIEnumerable QuestionsOptionItems {得ます。セット; }

} 

しかしこれは答えではありません。何か案は?

+0

**質問オプション**を使用しているアイテムと**サブ質問**テンプレートを使用しているアイテムを明確にすることはできますか? – DougCouto

+0

問題を明確にするために質問を更新しました。 – gadgetgem

+0

GlassMapperを見る私は親GUIDを公開する必要があると思っています。これは正しい考えですか? – gadgetgem

答えて

0

私は最終的に、このためのソリューションを働きました。 GlassBaseの親アイテムを変更して、[SitecoreParent(InferType = true)]という宣言を親の上に追加しました。親IDに基づいてサブクラスをフィルタリングできるようになりました。あなたはサイトコアの3つのユニークなデータテンプレートを持っているので、あなたは3ユニークなガラスベースのモデルを必要とする

+0

あなたはそれを把握できたことをうれしく思います。私の答えでは、クエリ** SitecoreQuery **のプロパティを** SitecoreChildren **で修飾されたプロパティに置き換えて、コードを単純化したことがわかります。 – DougCouto

0

おかげ

ジェンマ:)。また、あなたは単に子供プロパティを使用することができ、クラスのいずれかで、クエリプロパティを使用する必要はありません。

サイドノートあなたがやろうとしているものを達成するために必要ではないが、あなたはあなたのグラスモデルのすべてが、少なくとも、GlassBaseクラスのプロパティは、以下の、持っていることを確認することが役に立つかもしれません。だから、HERESに私がどうなるのか

は、これらのプロパティが含まれている基本クラスを作成し、このクラスを継承し、それらが適切にマッピングされた子供のプロパティ(だけでなく、親プロパティ)を持つことになります他のすべてのガラスのモデルを更新。

public class GlassBase 
{ 
    public Guid Id { get; set; } 

    [SitecoreParent(InferType = true)] 
    public GlassBase Parent { get; set; } 

    [SitecoreChildren(InferType = true)] 
    public GlassBase Children { get; set; } 
} 

今すぐあなたのテンプレート - 特定のモデルは、単純にこのクラスを継承することができます。

[SitecoreType(TemplateId = "Id of Data Template", AutoMap = true)] 
public class ContactUsPageSettings : GlassBase 
{ 
} 

[SitecoreType(TemplateId = "Id of Data Template", AutoMap = true)] 
public class ContactUsQuestionsOption : GlassBase 
{ 
} 

[SitecoreType(TemplateId = "Id of Data Template", AutoMap = true)] 
public class ContactUsSubQuestionOption : GlassBase 
{ 
} 

私が何を知らないので、私はこれらのテンプレートの各フィールドにマップする性質を残していますあなたが各テンプレートに持つフィールド。

サイドノート、あなたは彼らがサイトコアにおける適切なデータテンプレートにマップを確認するために、ガラスのモデルのそれぞれの上部にSitecoreTypeデコレータのれるtemplateId属性を設定してください。 GlassBaseには、SitecoreTypeデコレータは必要ありません。

関連する問題

 関連する問題