2016-05-17 3 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; } 

} 

и переписал аксессор (геттер и сеттер) часть, как: .....

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

Однако редактирование страницы не принимает во внимание мои пользовательские сеттер (он ведет себя так, как будто у меня был регулярный {получить, набор;} и более того, точка останова на сеттере не может быть достигнута во время отладки! и, похоже, относится к внутренней работе на эпицервере/ПТБ).

Так интересно:

  • почему TypedPageData (в моем примере ComposerPageBase наследует от TypedPageData) не могут быть отлажены как таковой
  • , что является приемлемым Обойти это? (Необходим для того, чтобы применить проверку в инкубаторе)

ответ

0

С PageTypeBuilder геттеров типа модели и сеттеры не вызывается для получения/установки значения свойства, когда содержимое редактируется с помощью пользовательского интерфейса.

Вместо этого он эффективно использует индекс .

Это отличается от того, как он работает в Episerver 7+.

Вот почему ваш код не выполняется, когда это свойство строки редактируется в пользовательском интерфейсе. Однако, если вы установили значение через код, например CurrentPage.MainArea = "Some value", ваш код настройки будет выполнен.

Чтобы уточнить, это потому, что PageTypeBuilder является третьей стороной дополнения, это не родное поведение EPiServer 6. Если ваш сайт был EPiServer 7+ сайт, вы сможете отладить ваш код как вы ожидали, так как он содержит сильно типизированные модели контента.

Смежные вопросы