ItemTemplate中的内容和标签如何不嵌套在表中?

时间:2013-07-16 12:51:21

标签: html asp.net html-table

我读到here td标签必须嵌套,所以当我看到ListView的ItemTemplate属性标签看起来像这样时我很困惑:

<ItemTemplate>    
                            <td id="Td2" runat="server">      
                                <table>        
                                    <tr>          
                                        <td>&nbsp;</td>          
                                        <td>
                                            <a href="ProductDetails.aspx?productID=<%#:Item.ProductID%>">
                                                <img src="/Catalog/Images/Thumbs/<%#:Item.ImagePath%>" 
                                                    width="100" height="75" /></a> 
                                        </td>
                                        <td>
                                            <a href="ProductDetails.aspx?productID=<%#:Item.ProductID%>">
                                                <span class="ProductName">
                                                    <%#:Item.ProductName%>
                                                </span>
                                            </a>            
                                            <br />
                                            <span class="ProductPrice">           
                                                <b>Price: </b><%#:String.Format("{0:c}", Item.UnitPrice)%>
                                            </span>
                                            <br />            
                                        </td>        
                                    </tr>      
                                </table>    
                            </td>  
                        </ItemTemplate>  

这是否与ListView从某个类继承并实现大量接口的事实有关?或者它与我不熟悉的ItemTemplate的某些方面有关系吗?我的来源是错的还是“只是ASP的事情”?

2 个答案:

答案 0 :(得分:1)

这就是asp.net定义控件的方式。一旦渲染了asp.net页面(转换为纯html),那些td元素就应该嵌套在tr中。您可以通过在浏览器中查看页面来源来查看输出。

答案 1 :(得分:1)

我不知道您的LayoutTemplate是什么样的,但这实际上与ListView本身无关,而是与开发人员选择的HTML布局有关。 td最好属于tr,但这些只是标签。您可以根据需要更改css并重新定义。然后浏览器将对其进行解释并显示它,然后您就可以处理选择的后果=)。

上述代码有意义的可能方式是:

<LayoutTemplate>
    <table border="0" cellpadding="1">
        <tr>
            <th>Product</th>
        </tr>
        <tr>
            <td id="itemPlaceholder" runat="server"></td>
        </tr>
    </table>
</LayoutTemplate>

这将使单个外部表具有产品标题,然后该表的每一行将包含上面的内部表(每个产品)。