如何转换为<div id =“”>?</div>

时间:2014-10-21 15:28:40

标签: html asp.net

您好我在asp.net页面中有以下代码

<tr id="XYZ" runat = "server">
  <td>body</td>
</tr>

我试图将其转换为div span格式

<div class="ui-class" id="XYZ">
<span>body</span>
</div>

在设计器文件中,我将Div id的数据类型从Html Generic更改为

System.Web.UI.HtmlControls.HtmlTableRow XYZ

当我尝试从我的aspx.cs文件访问此ID(XYZ)时,它给我null。 有人可以帮帮我吗?

编辑,因为没有必要指出我试过

<div class="ui-class" id="XYZ" runat="server">
<span>body</span>
</div>

还将数据类型更改回

System.Web.UI.HtmlControls.HtmlGenericControl

但它仍然是一样的。

1 个答案:

答案 0 :(得分:0)

您需要添加runat="server"属性以使其成为服务器控件,以便可以在代码隐藏中使用它。

尝试将runat="server"添加到div,如下所示:

<div class="ui-class" id="XYZ" runat="server">
<span>body</span>
</div>

如果没有runat="server"属性,ASP.NET不会将您的控件视为服务器控件(不会将它们添加到控件树中,序列化到viewstate等),并且赢得了&#39 ; t允许你从代码隐藏中操纵它们(为了简单起见,我忽略了一些例外)。

此外,您的代码实际上并未显示HtmlGenericControl控件。你需要这个:

protected System.Web.UI.HtmlControls.HtmlGenericControl XYZ;

protected访问修饰符(或可能是public)很重要,因为ASPX被编译为一个类,它是从它继承的代码隐藏的子类。代码隐藏通常声明控件,ASPX 实例化它们(基本上它会自动为XYZ = new System.Web.UI.HtmlControls.HtmlGenericControl())。 XYZ的声明和实例化是在后面的代码中访问时使其为非null的原因。

如果您仍然遇到问题,您可能需要验证您的ASPX没有使用XYZ作为动态控件或在数据绑定控件内部,例如Repeater,因为这些将以不同方式处理(例如,在OnItemDataBound处理程序内部。