【问题标题】:asp.net server controlsasp.net 服务器控件
【发布时间】:2011-03-02 05:49:33
【问题描述】:

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

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

【问题讨论】:

    标签: c# .net asp.net properties servercontrols


    【解决方案1】:

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

    [ParseChildren(true, "Parameters")]
    

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

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

    【讨论】:

    • 我已经尝试过了,但我认为因为我的 AutocompleteSettings 是一个普通类而不是一个控件,它不会解析属性,所以我看到的每个示例都使用控件或 web 控件作为子对象而不是标准课,我真的不想这样做......
    【解决方案2】:

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

    [PersistenceMode(PersistenceMode.InnerProperty)]
    

    属性。试一试;)

    【讨论】:

      猜你喜欢
      • 2012-07-12
      • 2011-02-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-01-18
      • 2013-03-07
      • 1970-01-01
      相关资源
      最近更新 更多