这是ASP.NET 4.0中的错误,还是我错过了明显的东西......?ASP.NET标签删除空间
我与<ItemTemplate>
内大致如下的<asp:Repeater>
...
<td><asp:Checkbox runat="server" ID="chkInclude" Checked="true" /></td>
<td>
<asp:Label runat="server" AssociatedControlID="chkInclude">
<%#Container.DataItem.FirstName%> <%#Container.DataItem.Surname%></asp:Label>
</td>
这导致了名字和姓氏被渲染没有之间的空间......
<td>JoeBlogs</td>
有一个简单的解决方案,即串接字符串...
<asp:Label runat="server" AssociatedControlID="chkInclude">
<%#Container.DataItem.FirstName & " " & Container.DataItem.Surname%></asp:Label>
...但我想知道为什么当使用单独的<%#Container%>
元素时,空间被剥离出<asp:Label>
。我无法在控件上看到一个明显的属性,表明这可以被覆盖。
作为一个现在删除评论指出的那样,我也可以在元素之间添加
作为另一个变通...但如果合适,这将阻止它自动换行。
进一步的调查(由@Andrei提示)显示,...
- 卸下
<asp:Label>
导致正确的输出 - 更换
<%#%>
块硬文本导致正确的输出 - 在
<%#%>
块之间添加硬文本会产生正确的输出(尽管我明显不想要额外的文本) - 更换
<asp:Label>
直<span>
导致正确的输出
但具有单个空间中的两个块,并且它失败(即之间没有空间)。
我也尝试删除AssociatedControlID
但也失败了。
如果多个空格用一个空格代替,这将是由于HTML的呈现方式。但删除单个空间看起来很奇怪。你尝试过简化的东西吗?说,而不是'<%# %>'只是硬编码的东西,看看会发生什么?甚至用span替换Label并再次查看会发生什么? – Andrei
@Andrei - 同意,这很奇怪。删除''完全没问题......用硬文本替换'<%#%>'块就好了......在'<%#%>'块之间添加文本没问题。但是有两个单一空间块,并且失败。我也尝试删除'AssociatedControlID',但也失败了。最后,这并不重要,因为我有一个简单的解决方法,我只是认为这是我做错了,并想检查 –
freefaller
没有你做错了什么,但这将是有趣的弄清楚。所以我会尝试的是:1)没有容器:'乔博客 '; 2)没有标签控制'<%#容器%><%#容器%>'。你可以检查是否有任何保留空间? –
Andrei