Eval script for server side control's ID property?

后端 未结 6 1298
暗喜
暗喜 2020-12-07 05:36

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

 

        
相关标签:
6条回答
  • 2020-12-07 06:02

    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>
    
    0 讨论(0)
  • 2020-12-07 06:03

    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">
    
    0 讨论(0)
  • 2020-12-07 06:04

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

    <div id="<%# Eval("RENTER_ID") %>" style="display:none"></div> 
    
    0 讨论(0)
  • 2020-12-07 06:04

    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');
         });    
    
    0 讨论(0)
  • 2020-12-07 06:05

    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
            }
        }
    }
    
    0 讨论(0)
  • 2020-12-07 06:16

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

    0 讨论(0)
提交回复
热议问题