2016-05-17 1 views
0

私はEpiserverで作曲ブロック(クラス)でバリ条件を追加する必要があるので、私はここから始まっ:デバッグEpiserver 6 R2でTypedPageDataのサブクラス

[PageType("110187CD-89F0-40A8-A075-68944DD5AC1D", 

    Name = "New Composer Block", 

    Description = "My Description", 

    Filename = "/Templates/Webform1.aspx")] 

public class ComposerPage : ComposerPageBase 

{ 

    [PageTypeProperty(

     DisplayInEditMode = false, 

     UniqueValuePerLanguage = false, 

     Type = typeof(LongString), 

     Tab = typeof(ComposerTab))] 

    public virtual string MainArea { get; set; } 

} 

とアクセサ(ゲッターとセッターを書き直しなど)一部:、しかも をし、{;セットを取得} .....しかし

public virtual string MainArea 
     { 
      get { return this.GetPropertyValue(p => p.MainArea); } 
      set { 
       if(conditionhere) 
        this.SetPropertyValue(p => p.MainArea, "abc"); 
       else this.SetPropertyValue(p => p.MainArea, value); 
       } 
     } 

は、考慮に私のカスタムのセッターを取らないページを編集する(それは私が定期的に持っていたかのように振る舞いますデバッガ中にsetter上のブレークポイントに到達できません!(非常にunexp episerver/PTBの内部動作に関係していると思われる)。

でとても興味を持って:

  • なぜTypedPageDataは(私の例ではComposerPageBaseがTypedPageDataから継承)このための許容可能な回避策は何か
  • のようなデバッグすることができないのですか? (セッターに検証を適用するために必要な)

答えて

0

でPageTypeBuilderモデルタイプのゲッターとセッターは、コンテンツがUIで編集されたときに、プロパティ値を設定/取得するために呼び出されていません。

代わりに、プロパティインデクサを効果的に使用します。

これはEpiserver 7+での動作とは異なります。

これは、文字列プロパティがUIで編集されたときにコードが実行されない理由です。しかし、CurrentPage.MainArea = "Some value"のようにコードで値を設定すると、設定コードが実行されます。 PageTypeBuilderは、サードパーティのアドオンであるため、これは明確にするために

は、それはのようなあなたのウェブサイトはEpiserver 7+ウェブサイトだった場合、あなたのコードをデバッグすることができるだろうEpiserver 6の本来の動作ではありません強く型付けされたコンテンツモデルがネイティブに機能するため、期待していました。

関連する問題