嗨,任何人都可以帮我解决我的问题。我将动态Id分配给图像控件的ID属性。问题是我得到一个错误,说“表格标签形成不好”。我将双引号替换为单引号或删除了这些引号,但我得到了同样的错误。我该如何解决这个问题?顺便说一下,我使用了c#语言。
<img ID="<%# DataBinder.Eval(Container.DataItem, "Id")%>" runat="server" />
答案 0 :(得分:2)
制作本
<img ID="<%# DataBinder.Eval(Container.DataItem, "Id")%>" runat="server" />
到此:
<img ID='<%# DataBinder.Eval(Container.DataItem, "Id")%>' runat="server" />
更新:显然确实不可能这样做。我在html图像和图像服务器控件中进一步尝试了测试应用程序。在进一步思考并喝咖啡之后,有意义的是,ID不能这样设置。如何在代码隐藏中为没有ID的东西设置属性?
另一种方法是:
<form id="form1" runat="server">
<div>
<asp:PlaceHolder runat="server" ID="phTest"></asp:PlaceHolder>
</div>
</form>
和代码隐藏:
HtmlImage image = new HtmlImage();
image.ID = "SomeRandomId";
image.Src = "urltosomeimage";
phTest.Controls.Add(image);
答案 1 :(得分:0)
我遇到了类似的问题,我解决了这个问题:
<img ID='<%# DataBinder.Eval(Container.DataItem, "Id")%>' runat="server" />
原因是&lt;%#%&gt;之间的表达式如果它不是单引号,则无法进行评估。
答案 2 :(得分:0)
这个怎么样?
<asp:img ID='<%# DataBinder.Eval(Container.DataItem, "Id")%>' runat="server" />
或尝试删除runat =“server”,因为你的img标签不是服务器控件
答案 3 :(得分:0)
如果您使用.NET 4.0设置ClientIDMode=Static
或更改ID不在标记中,而是在代码隐藏中。
如果您需要从代码隐藏中访问它,请使用而不是。