【问题标题】:ASP.Net user control with "n" multiple properties具有“n”多个属性的 ASP.Net 用户控件
【发布时间】:2013-12-20 12:53:20
【问题描述】:

我希望我的用户控件具有获取 n 个不同参数的功能。 n 并不意味着要修复。
例如,一次我将传递 3 个字符串给它,下一次传递 12 个:

<mycompany:MyUC runat="server" ID="mctID" Para1="test1" Para2="test3" Para3="test4" Para4="test8"  />

<mycompany:MyUC runat="server" ID="mctID" Para1="test1" Para2="test3" Para3="test4" Para4="test8" Para5="test1" Para6="test3" Para7="test4" Para8="test8" />

如果不提前定义属性,这可能吗?

【问题讨论】:

  • 鉴于 MyUC 最终是一个类,您将如何编写一个具有未定义数量属性的类?您需要一个采用 IEnumerable 值的方法或属性。

标签: asp.net properties user-controls


【解决方案1】:

除非您使用某种分隔符传递它,否则我认为这是不可能的:

  MyProperty="Value1, Value2, Value3"

然后在代码端用“,”分割。

但我认为最好在控件中有一个函数并将值例如作为字符串数组(VB.Net 语法)传递:

控制:

Public Sub SetMyValues(values As String())
    ' Store in viewstate or do what you need
End Sub

初始化控件时,从页面或任何你需要的地方调用:

MyControl1.SetMyValues({"Value1", "Value2", "Value3"})

【讨论】:

    【解决方案2】:

    我使用了另一种方法来实现我的目标。解决方案是在我的属性中使用 PersistenceMode 属性以及我自己的类“SelectControl”:

     <PersistenceMode(PersistenceMode.InnerProperty)> _
            Public Property SelectControls() As List(Of SelectControl)
                Get
    ....
                End Get
                Set(ByVal value As List(Of SelectControl))
    ...
                End Set
            End Property
    
    
                            <myCompany:QDirectEditAdapter runat="server" ID="deaContactsSupplier" EditControlID="grdContactsSupplier" EditControlKeyField="SSC_USR_ID_FK">
                                <SelectControls>
                                    <myCompany:SelectControl ControlID="cboUserSelection" ContainerID="pnlUserSelection" KeyField="USR_ID" ActivityColumns="USR_USERNAME, USR_NAME" />
                                    <myCompany:SelectControl ControlID="qacProductSelection" ContainerID="pnlProductSelection" KeyField="NR" ActivityColumns="SSC_APPLICATION" />
                                </SelectControls>
                            </myCompany:QDirectEditAdapter>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-04-09
      • 2010-12-07
      • 1970-01-01
      • 2015-09-05
      • 1970-01-01
      • 2019-09-17
      • 1970-01-01
      • 2014-10-09
      相关资源
      最近更新 更多