我正在开发一个自定义控件(4.0),我想知道如何将业务类重用为属性而不重写它。
我的业务层汇编中有一组类(简化):
public class LatLng
{
public decimal Lat { get; set; }
public decimal Lng { get; set; }
}
public class MapOptions
{
...
public LatLng Center { get; set; }
...
}
etc...
我想要的是将MapOptions类重用为属性,我的自定义控件类似于:
public class MyControl : WebControl
{
[DesignerSerializationVisibility(DesignerSerializationVisibility.Content), PersistenceMode(PersistenceMode.InnerProperty)]
public MapOptions MapOptions
{
...
get
{
return this.ViewState["MapOptions"] as MapOptions;
}
set
{
this.ViewState["MapOptions"] = value;
}
...
}
}
但是通过这种方式,我无法看到LatLng(以及MapOptions用作属性的其他类)的属性作为MapOptions标记的内部部分。仅作为属性。 所以在标记中我能写:
<rec:MyControl ID="control1" runat="server" Width="900" Height="500">
<MapOptions Center="" />
</rec:MyControl>
但是这样我就失去了LatLng暴露的智能感知,我正在寻找一个解决方案来获得这个:
<rec:MyControl ID="control1" runat="server" Width="900" Height="500">
<MapOptions>
<Center Lat="12.0" Lng="2.0" />
</MapOptions>
</rec:MyControl>
有什么建议吗?
答案 0 :(得分:0)
尝试添加标记
[DesignerSerializationVisibility(DesignerSerializationVisibility.Content), PersistenceMode(PersistenceMode.InnerProperty)]
到public class LatLng