2009-07-08 2 views
0

Мне нужно создать следующее на странице ASP.NET. Какой лучший, самый простой способ сделать это?Как передать пользовательское значение asp.net на странице aspx?

Упрощенный пример. Поэтому для пользовательского свойства мне нужно передать строку, которая будет включать индекс (i) в собственность элемента управления. Я мог бы сделать это с помощью кода, но было бы проще и проще, если бы я мог сохранить его в файле .aspx.

<table> 
<% 
    for(var i = 0; i < 10; i++) 
{ 
%><tr> 
    <td> 
     <cc1:CustomControl runat="server" CustomProperty="SomeText[<% i %>]"/> 
    </td> 
</tr> 
<% } %> 
</table> 

По существу, мне нужно передать пользовательское, не предопределенное значение элементу управления asp.net.

ответ

2

Возможно, это не сработает, как вы ожидаете. Вместо этого добавьте держатель место, как это:

<table> 
    <asp:PlaceHolder id="RowPlaceHolder" runat="server" /> 
</table> 

, а затем в своем коде позади:

for (int i = 0;i<10;i++) 
{ 
    var tr = new HTMLTableRow(); 
    var td = new HTMLTableCell(); 
    var Custom = (CustomControl)LoadControl("MyControl.ascx"); 
    Custom.id="Custom" + i.ToString(); 
    Custom.CustomProperty = "SomeText[" + i.ToString() + "]"; 

    td.Controls.Add(Custom); 
    tr.Controls.Add(td); 
    RowPlaceHolder.Controls.Add(tr); 
} 

Углубляясь, если число 10 действительно жестко, вы найдете вещи много легче справиться в долгосрочной перспективе, если вы просто запустите и скопируйте 10 записей для вашего управления в разметку aspx вручную. Динамические элементы управления в веб-форматах ASP.Net изобилуют подводными камнями и ошибками.

Если номер исходит из какого-то законного источника данных, то, скорее всего, вам лучше использовать этот источник данных и привязать его к управлению данными, например, к ретранслятору.

+0

+1 для указания на подводные камни динамического управления. – NotMe

0
<%= i %> 

Должно работать для вас.

+0

не работает. это серверный контроль, строка передается как свойство, включая все скобки. – Sumrak

0

Вы могли качаться с ретранслятором и использовать Container.ItemIndex,

<asp:Repeater ID="rpt" runat="server"> 
    <HeaderTemplate> 
     <table> 
    </HeaderTemplate> 
    <ItemTemplate> 
     <tr> 
      <td> 
       <cc1:CustomControl runat="server" CustomProperty="SomeText[<%# Container.ItemIndex %>]"/> 
      </td> 
     </tr> 
    </ItemTemplate> 
    <FooterTemplate> 
     </table> 
    </FooterTemplate> 
</asp:Repeater> 
Смежные вопросы