2016-05-17 54 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+的网站,你就可以调试代码像您的预期,因为它本身就具有强类型的内容模型。