Episerver のコンポーザ ブロック (クラス) にバリデータ条件を追加する必要があるため、次から始めました。
[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);
}
}
ただし、ページを編集しても、カスタム セッターは考慮されません (通常の {get; set;} があるかのように動作し、さらに、デバッグ中にセッターのブレークポイントに到達できません! (まったく予想外で、 episerver/PTB の内部の仕組みに関連しています)。
とても興味があります:
- TypedPageData (私の例では、ComposerPageBase は TypedPageData から継承されます) をそのままデバッグできない理由
- これに対する許容可能な回避策は何ですか? (セッターで検証を適用するために必要)