Eval script for server side control's ID prope

2020-02-02 02:19发布

Using the following Eval script for setting ID property causes error. Error message: the server tag is not well formed.

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

Even replacing "" with '' of ID property generates error. While using '', its error message

"The ID property of a control can only be set using the ID attribute in the tag and a simple value. Example: <asp:Button runat="server" id="Button1" />"

Any ideas to solve this?

标签: asp.net eval
6条回答
淡お忘
2楼-- · 2020-02-02 02:53

You can't do it.

Why do you need to? If it's so you can reference it at some point, you can access the client-side id via the property ClientID.

Example, as requested:

<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>
查看更多
疯言疯语
3楼-- · 2020-02-02 02:55

As Silky said, you can't do this. The attributes can't be dynamic in none code behind. One solution is to subclass the Panel:

public class MyPanel : Panel
{
    public override string ID
    {
        get
        {
            return "get from my datasource";
        }
        set
        {
            // noop
        }
    }
}
查看更多
太酷不给撩
4楼-- · 2020-02-02 02:55

asp.net controls' ID doesn't support the binding. Try to use HTML controls to work around.

查看更多
Explosion°爆炸
5楼-- · 2020-02-02 02:56

Do you need to use a panel? Could you just use html?

<div id="<%# Eval("RENTER_ID") %>" style="display:none"></div> 
查看更多
Juvenile、少年°
6楼-- · 2020-02-02 02:59

Try this

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

Try this - It will not popup any messages if you do formatting, but it will show Design time error.

<asp:Panel runat="server" ID='<%# Eval("RENTER_ID") %>' Visible="false">
查看更多
7楼-- · 2020-02-02 03:03

It almost always when asp.net fails , comes Jquery into the field to set the situation up ;) . you can do this trick for example :

In HTML:

<div>
<input type="file" id="whatever" class="uploader" runat="server" />
<span id="<%#Eval("ID")%>'"></span>
</div>

Jquery:

    $('.uploader').on('change', function () {
        var id = $(this).next('span').attr('id');
     });    
查看更多
登录 后发表回答