我需要在 Episerver 的 composer 块(类)中添加一个验证器条件,所以我从这个开始:
[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);
}
}
但是,编辑页面并没有考虑到我的自定义设置器(它的行为就像我有一个常规的 {get; set;} 而且,在调试期间无法到达设置器上的断点!(非常出乎意料,似乎与 Episerver/PTB 的内部工作有关)。
很感兴趣:
- 为什么不能像这样调试 TypedPageData(在我的示例中 ComposerPageBase 继承自 TypedPageData)
- 什么是可接受的解决方法?(需要在设置器中应用验证)