1

以下在 Chrome 中工作得很好。

<asp:LinkButton runat="server" ID="lbEdit" OnClick="lbEdit_Click">
    <button type="button" class="edit">
         Edit
    </button>
</asp:LinkButton>

这是按钮及其子类的 CSS。

button
{    
    padding: 3px;
}
button.edit 
{
    background:#3f6096;
    border:none;
    font:10px verdana;
    color:#fff;
    width:71px;
    margin-top:3px;
}

如您所见,没有什么特别的;只是颜色和美丽的东西。
我单击蓝色的编辑按钮,它会很好地触发 OnClick 回发......在 Chrome 中!
但是如果我在 IE8 中做同样的事情,它就什么也不做;甚至没有检测到点击。

为了帮助查明问题,我删除了标签,只保留了“编辑”这个词,它在 IE8 中作为一个简单的下划线链接工作得很好;回发触发。

那么,为什么 IE8 不能接受 LinkBut​​ton 中的任何内容?

4

4 回答 4

4

如果您需要处理回发并同时看起来像一个按钮,为什么要使用 LinkBut​​ton?为什么不让它只是一个按钮?在我看来,使用其中一个的唯一原因是外观。从功能上讲,它们都应该触发回发。

于 2010-10-20T00:31:54.267 回答
1

你正在做的事情不是你应该做的事情,但我会说 IE 可能是最接近“正确”的行为。

您不应将按钮元素嵌套在提供链接的其他元素中。您可以简单地button从内部删除LinkButton,将 OnClick 附加到它,使样式工作,它会很好。

我说我认为 IE 的行为更接近“正确”的原因是因为它正在做你在最里面的标签上定义的事情。这没什么。button(实际上,您没有对元素附加任何操作)。但实际上,无论如何,这不是你应该在 HTML 中做的事情,因为我不认为行为是首先定义的。

于 2010-10-20T00:44:49.817 回答
1

你想在这里达到什么目的?

您有一个带有嵌套 HTML 按钮的服务器端链接按钮?

当您希望超链接能够执行回发时,LinkBut​​ton 很有用。

你看过渲染的 HTML 吗?我不知道在锚标记内有一个按钮是否甚至是有效的 HTML。

如果您希望回发由特定的服务器端事件处理,只需使用 ASP:Button。

如果你不这样做,只需使用常规的 HTML 按钮。

于 2010-10-20T00:44:54.747 回答
0

您可以使用CssClass:

<asp:TemplateField HeaderText="Opciones">
    <ItemTemplate>
    <asp:LinkButton runat="server" Text="Hola!" CommandName="Deshabilitar" 
        CssClass="btn btn-primary"
        CommandArgument='<%# Item.Id %>' />
    </ItemTemplate>
</asp:TemplateField>
于 2015-07-28T19:52:06.180 回答