0

好的,我有一个自定义服务器控件,它有一些自动完成设置,我有这个,它工作正常。

    /// <summary>
    /// Auto complete settings
    /// </summary>
    [System.ComponentModel.DesignerSerializationVisibility    (System.ComponentModel.DesignerSerializationVisibility.Content),
    PersistenceMode(PersistenceMode.InnerProperty),
    Category("Data"), Description("Auto complete settings"), NotifyParentProperty(true)]
    public AutoCompleteLookupSettings AutoComplete { private set; get; }

我还有一个与自动完成设置真正相关的 ParameterCollection,目前这个集合位于控件本身之外,如下所示:

    /// <summary>
    /// Parameters for any data lookups
    /// </summary>
    [System.ComponentModel.DesignerSerializationVisibility(System.ComponentModel.DesignerSerializationVisibility.Content), PersistenceMode(PersistenceMode.InnerProperty)]
    public ParameterCollection Parameters { get; set; }

我想做的是将参数集合移动到 AutoCompleteSettings 中,因为它确实与我的自动完成有关,我已经尝试过但无济于事..

我想从

<cc1:TextField ID="TextField1" runat='server'>
    <AutoComplete MethodName="GetTest" TextField="Item1" TypeName ="AppFrameWork.Utils" />
    <Parameters>
        <asp:ControlParameter ControlID="txtTest" PropertyName="Text" Name="test" />
    </Parameters>
</cc1:TextField>

<cc1:TextField ID="TextField1" runat='server'>
    <AutoComplete MethodName="GetTest" TextField="Item1" TypeName ="AppFrameWork.Utils" >
        <Parameters>
            <asp:ControlParameter ControlID="txtTest" PropertyName="Text" Name="test" />
        </Parameters>
    </AutoComplete>
</cc1:TextField>
4

2 回答 2

1

我认为您正在寻找的是ParseChildren属性。

[ParseChildren(true, "Parameters")]

如果您使用此属性标记您的类,它将尝试将标记解析为子集合,并将其分配给名为“Parameters”的属性。我链接的页面上有一个很好的例子。

另一个答案中提到的 PersistenceMode 属性实际上是指示 VS 设计器在生成标记时正确呈现子属性。我不相信它会产生你想要的效果。

于 2010-06-10T16:38:14.157 回答
0

为此,您需要将 ParameterCollection 设置为 AutoComplete 对象的属性。我不是 100% 确定,但 ParameterCollection 对象声明可能需要

[PersistenceMode(PersistenceMode.InnerProperty)]

属性。试试看 ;)

于 2010-06-10T15:32:08.340 回答