为什么LinkBut​​ton不能与表一起使用?

时间:2010-07-16 17:29:08

标签: asp.net .net-3.5 linkbutton

使用ASP.NET 3.5,您可以创建一个LinkBut​​ton,然后在其中定义内容。如果我有div标签或任何类型的文本或任何东西,它工作正常,但如果我使用表格,点击实际上不会由于某种原因回发。这应该会带你到谷歌(你会在那里得到一个错误,但它仍然应该去),例如:

<asp:LinkButton ID="lbTest" PostBackUrl="http://www.google.com" runat="server">
            <table>
                <tr>
                    <td>Test</td>
                    <td>col2</td>
                    <td>col3</td>
                </tr>
            </table>
        </asp:LinkButton>

我可以通过构建一个带有div的“表格”来解决它,但我讨厌用div格式化。

4 个答案:

答案 0 :(得分:3)

你无法做你想做的事情,因为表格标签不会让a标签可以点击,即使它们看起来像是这样。我认为这不是对a标记的有效使用。

你可以解决这个问题,我在桌面上添加了一个客户端,然后使用javascript手动执行重定向。

另外,为什么使用LinkButton与常规a代码?我假设您想要链接回应用中的内容。如果是这样,您将需要在javascript中生成__DoPostBack调用以模仿LinkButton行为。为此,请使用以下代码生成正确的javascript:

string javascriptToDoPostBack = Page.GetPostBackEventReference(yourLinkButton); 

答案 1 :(得分:2)

该表是一个块元素,链接是一个内联元素,因此您不能将表放在链接中。

浏览器会尝试纠正结构,可能是通过将表移到链接之外,所以你得到的是一个没有链接的表,一个没有内容的链接。

如果要将元素放在链接中,它们必须是内联元素,例如跨度标签。然后,您可以使用CSS将链接及其中的元素转换为块元素,但结构必须在应用CSS之前和之后都有意义。

答案 2 :(得分:1)

我认为这是IE的问题。 在FF或GC上,它不会发生。

此解决方案可能有所帮助:

<script type="text/javascript">
  function SeachClick()  {
        <%=Page.GetPostBackEventReference(LinkButtonSearch)%>        
  }   

<asp:LinkButton ID="LinkButtonSearch" runat="server" OnClick="LinkButtonSearch_Click"
                            CausesValidation="false">
< table border="0" cellspacing="0" cellpadding="0" style="height: 22px;" onclick="SeachClick()" >
<tr>
        <td class="but_left">
</td>
<td class="but_center">
  <asp:Literal runat="server" meta:resourceKey="SearchButtonText" />
</td>
<td class="but_mag">
</td>
 <td class="but_right">
</td>


</tr>
</table>

答案 3 :(得分:0)

我很确定你不能用桌子来做这件事。