服务器端控件的ID属性的Eval脚本?

时间:2009-12-07 10:40:15

标签: asp.net eval

使用以下Eval脚本设置ID属性会导致错误。 错误消息:服务器标记格式不正确。

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

即使用ID属性替换“”也会产生错误。 使用''时,会显示错误消息

“控件的ID属性只能使用标记中的ID属性和简单值来设置。例如:<asp:Button runat="server" id="Button1" />

有什么想法可以解决这个问题吗?

6 个答案:

答案 0 :(得分:2)

你不能这样做。

为什么需要?如果是这样您可以在某个时候引用它,则可以通过属性ClientID访问客户端ID。

示例,根据要求:

<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 :(得分:1)

正如西尔基所说,你做不到这一点。在没有代码的情况下,属性不能是动态的。一种解决方案是将Panel子类化:

public class MyPanel : Panel
{
    public override string ID
    {
        get
        {
            return "get from my datasource";
        }
        set
        {
            // noop
        }
    }
}

答案 2 :(得分:0)

试试这个

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

试试这个 - 如果你进行格式化,它不会弹出任何消息,但它会显示设计时错误。

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

答案 3 :(得分:0)

您需要使用面板吗?你能用到html吗?

<div id="<%# Eval("RENTER_ID") %>" style="display:none"></div> 

答案 4 :(得分:0)

asp.net控件'ID不支持绑定。尝试使用HTML控件来解决。

答案 5 :(得分:0)

几乎总是在asp.net失败时,将Jquery引入现场以设置情况;)。您可以例如使用此技巧:

在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');
     });