2016-05-17 30 views
0

我需要在Episerver作曲家塊(類)添加一個校驗條件,所以從這個開始:調試TypedPageData在Episerver 6子類R2

[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; } 

} 

和重寫了存取器(getter和setter )一部分: .....

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(它的行爲就好像我有一個定期{獲取;集;} 而且,該在調試過程中無法達到setter的斷點!(完全沒有解決似乎與episerver/PTB的內部工作有關)。

這麼感興趣:

  • 爲什麼TypedPageData(在我的例子ComposerPageBase從TypedPageData繼承)不能進行調試這樣
  • 究竟是什麼一個可接受的解決方法嗎? (爲了在設定器應用驗證需要)

回答

0

隨着PageTypeBuilder模型類型的getter和setter不調用用於檢索/內容時通過UI設置編輯的屬性值。

相反,它有效地使用屬性索引器。

這與Episerver 7+中的工作方式不同。

這就是爲什麼在用戶界面中編輯字符串屬性時未執行代碼的原因。但是,如果您通過代碼設置值(如CurrentPage.MainArea = "Some value"),則會執行setter代碼。

爲了澄清,這是因爲PageTypeBuilder是一個第三方插件,它不是Episerver 6的原生行爲如果您的網站是一個Episerver 7+的網站,你就可以調試代碼像您的預期,因爲它本身就具有強類型的內容模型。