繁体   English   中英

asp.net服务器控件

[英]asp.net server controls

好的,我有一个具有一些自动完成设置的自定义服务器控件,我具有以下内容,并且工作正常。

    /// <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>

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

[ParseChildren(true, "Parameters")]

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

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

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

[PersistenceMode(PersistenceMode.InnerProperty)]

属性。 试试看 ;)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM