使用以下Eval脚本设置ID属性会导致错误。 错误消息:服务器标记格式不正确。
<asp:Panel runat="server" ID="<%# Eval("RENTER_ID") %>" Visible="false">
即使用ID属性替换“”也会产生错误。 使用''时,会显示错误消息
“控件的ID属性只能使用标记中的ID属性和简单值来设置。例如:<asp:Button runat="server" id="Button1" />
”
有什么想法可以解决这个问题吗?
答案 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');
});