Eval скрипт для свойства идентификатора элемента управления на стороне сервера? - PullRequest
1 голос
/ 07 декабря 2009

Использование следующего скрипта Eval для установки свойства ID приводит к ошибке. Сообщение об ошибке: тег сервера сформирован неправильно.

 <asp:Panel runat="server" ID="<%# Eval("RENTER_ID") %>" Visible="false">

Даже замена "" на '' свойства ID приводит к ошибке. При использовании '' появляется сообщение об ошибке

"Свойство ID элемента управления можно установить только с помощью атрибута ID в теге и простого значения. Пример: <asp:Button runat="server" id="Button1" />"

Есть идеи, чтобы решить эту проблему?

Ответы [ 5 ]

2 голосов
/ 07 декабря 2009

Вы не можете сделать это.

Зачем тебе это нужно? Если это так, вы можете ссылаться на него в определенный момент, вы можете получить доступ к идентификатору на стороне клиента через свойство ClientID .

Пример, по запросу:

<asp:Repeater runat="server" ID="repFoo">
    <ItemTemplate>
        <asp:Panel runat="server" ID="pnlFoo">
            <input type = "button"
                onclick = "alert('<%# Container.FindControl("pnlFoo").ClientID %>');"
                value   = "click to get id for <%# Container.ItemIndex %>" />
        </asp:Panel>
    </ItemTemplate>
</asp:Repeater>
1 голос
/ 07 декабря 2009

Как сказал Силки, ты не можешь этого сделать. Атрибуты не могут быть динамическими ни в одном коде позади. Одним из решений является создание подкласса Panel:

public class MyPanel : Panel
{
    public override string ID
    {
        get
        {
            return "get from my datasource";
        }
        set
        {
            // noop
        }
    }
}
0 голосов
/ 26 декабря 2012

ID элементов управления asp.net не поддерживает привязку. Попробуйте использовать элементы управления HTML для обхода.

0 голосов
/ 07 декабря 2009

Вам нужно использовать панель? Не могли бы вы просто использовать HTML?

<div id="<%# Eval("RENTER_ID") %>" style="display:none"></div> 
0 голосов
/ 07 декабря 2009

Попробуйте это

 <div runat="server" id='<%# Eval("IsVisible") %>' visible="false"> </div>

Попробуйте: это не будет отображать никаких сообщений, если вы выполните форматирование, но покажет ошибку времени разработки.

<asp:Panel runat="server" ID='<%# Eval("RENTER_ID") %>' Visible="false">
...