2013-12-20 5 views
0

Я хочу, чтобы мой пользовательский элемент управления имел возможность принимать n разных параметров. n не предназначено для исправления.
Например один раз я передам 3 строки в него и в следующий раз 12:Пользовательский контроль ASP.Net с «n» множественными свойствами

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

Возможно ли это без определения свойств заранее?

+0

Учитывая MyUC, в конечном счете класса, как бы вы написать класс, который имел неопределенное количество свойств? Вам нужен метод или свойство, которое вместо IEnumerable значений. –

ответ

0

Я использовал другой метод для достижения своей цели. Решение было использовать атрибут 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> 
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"}) 
Смежные вопросы