我试图迭代包含 html 表的 Repeater 的内容,并使用每个单元格的内容。这对于标准 HTML 组件来说效果很好,但当我尝试使用控件时就会崩溃。下面的代码将打印第一个单元格“Item #1”的值,但在尝试访问第二个单元格的 .InnerText 时将抛出 HttpException。错误如下:
Cannot get inner content of because the contents are not literal.
我尝试通过其他地方找到的解决方案使用 RenderControl,但由于两个原因失败了; 1) 它呈现了第一个单元格的整个 HTML,2) 当尝试访问第二个单元格时它仍然会崩溃,并显示以下消息:
'LinkButton1' of type 'LinkButton' must be placed inside
a form tag with runat=server
有没有一种简单的方法来获取我想要的 LinkButton 文本?转发器代码和 C# 可以在下面找到。
中继器代码:
<asp:Repeater ID="Rep1" runat="server">
<HeaderTemplate>
<table id="Table1" class="data">
</HeaderTemplate>
<ItemTemplate>
<tr id="Row" runat="server">
<td>Item #1</td>
<td><asp:LinkButton ID="LinkButton1" OnClick="DoSomething"
Text="Item #2" runat="server" /></td>
</tr>
</ItemTemplate>
<FooterTemplate>
</table>
</FooterTemplate>
C#:
foreach (RepeaterItem item in Rep1.Items)
{
HtmlTableRow row = item.Controls[0].FindControl("Row") as HtmlTableRow;
foreach (HtmlTableCell cell in row.Cells)
{
if (cell.InnerText != string.Empty)
{
Console.WriteLine(cell.InnerText);
}
}
}
最佳答案
对于到达这里的其他人:
您无法在 Control
上获取 InnerHtml
或 InnerText
,除非其内容是文字,即没有任何服务器控件或带有 runat="server"
里面需要渲染
关于asp.net - 无法获取 '' 的内部内容,因为内容不是文字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2610249/