以下在Chrome中运行良好。
<asp:LinkButton runat="server" ID="lbEdit" OnClick="lbEdit_Click">
<button type="button" class="edit">
Edit
</button>
</asp:LinkButton>
这里是CSS for button及其子类。
button
{
padding: 3px;
}
button.edit
{
background:#3f6096;
border:none;
font:10px verdana;
color:#fff;
width:71px;
margin-top:3px;
}
正如你所看到的,没什么特别的;只是颜色和美丽的东西。
我点击蓝色的编辑按钮,它就可以点亮OnClick回复了....在Chrome!中
但是,如果我在IE8中做同样的事情,它什么都不做;甚至没有检测到点击。
为了帮助查明问题,我删除了标签并保留了单词“Edit”,它在IE8中作为一个简单的带下划线的链接正常工作;回击火灾。
那么,为什么IE8不能接受LinkButton中的任何内容?
答案 0 :(得分:4)
如果你需要处理回发并同时看起来像一个按钮,为什么要使用LinkButton?为什么不把它变成一个按钮呢?在我看来,使用一个在另一个上面的唯一原因是外观。从功能上讲,它们都应该触发回发。
答案 1 :(得分:1)
你所做的并不是你想要做的事情,但我会说IE可能是最接近'正确'的行为。
您不应将按钮元素嵌套在提供链接的其他元素中。您只需从button
内删除LinkButton
,然后将OnClick附加到其上,使样式生效,这样就会很好。
我之所以说我认为IE的行为更接近'正确'是因为它正在做你在最里面的标签上定义的内容;这没什么。 (实际上,您尚未将任何操作附加到button
元素)。但实际上,这不是你应该用HTML做的事情,因为我认为行为不是首先定义的。
答案 2 :(得分:1)
你想在这里实现什么目标?
您有一个服务器端链接按钮,带有嵌套的HTML按钮?
当您希望超链接能够执行回发时,LinkButton非常有用。
您是否看过呈现的HTML?我不知道锚标签内是否有按钮甚至是有效的HTML。
如果您希望回发由特定的服务器端事件处理,只需使用ASP:Button。
如果你不这样做,只需使用常规的HTML按钮。
答案 3 :(得分: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>