Как передать пользовательское значение в asp.net элемент управления на странице aspx?

StackOverflow https://stackoverflow.com/questions/1100583

  •  11-09-2019
  •  | 
  •  

Вопрос

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

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

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

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

Это было полезно?

Решение

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

<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.Сетевые веб-формы изобилуют подводными камнями и подводными камнями.

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

Другие советы

<%= i %>

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

Вы могли бы потренироваться с помощью ретранслятора и использовать Контейнер.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>
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top