具有“n”个多属性的ASP.Net用户控件

时间:2013-12-20 12:53:21

标签: asp.net properties user-controls

我希望我的用户控件具有使用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" />

如果没有事先定义属性,这可能吗?

2 个答案:

答案 0 :(得分:0)

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

  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"})

答案 1 :(得分:0)

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

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