菜鸟今天编写一个web网页,发现<table>标签一旦添加runat="server",就报错。上网找资料,一直没有看到合适的解释。
最后终于自己顿悟了,发现是自己服务器控件乱嵌套导致的问题,。现将我的理解放在这里,提醒自己,警示后来者。
服务器控件之间不能随意的嵌套。
如:
<table runat=“server”>
<tr><td></td></tr>
<asp:Reapter runat="server">
<itemTemplate>
<tr><td></td></tr>
</itemTemplate>
</asp:Reapter>
<tr><td></td></tr>
</table>
会报异常,webcontrol.Reapter 不能转化为htmlcontrol.htmltablerow.
<asp:Reapter runat="server">
<headTemplate>
<table runat=“server”>
<tr><td></td></tr>
</headTemplate>
<itemTemplate>
<tr><td></td></tr>
</itemTemplate>
<footTemplate>
<tr><td></td></tr>
</table>
</footTemplate>
</asp:Reapter>
也会报异常,htmltable服务器控件,不能没有结束标记,实际也就是不能嵌套在reapter中。
将table中的runat="server"去掉,转为非服务器控件,以上两例就都正常了,可是就不能在后台控制table控件了。
对于如何后台控制table控件,我还在思考中,有了新的方法,会及时地更新的。