LinkButton の OnClick が IE8 で起動しない
-
09-10-2019 - |
質問
以下は 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 ポストバックが正常に起動されます。クロムで!
しかし、IE8 で同じことをしても何も起こりません。クリックすら検知しません。
問題を正確に特定しやすくするために、タグを削除して「編集」という単語だけを残しました。これは、IE8 では単純な下線付きリンクとして問題なく機能します。ポストバックが起動します。
では、なぜ IE8 は LinkButton 内で何も受け入れられないのでしょうか?
解決
ポストバックを処理する必要があると同時にボタンのように見える必要があるのに、なぜ LinkButton を使用するのでしょうか?なぜそれをただのボタンにしないのでしょうか?一方を他方よりも使用する唯一の理由は、見た目の問題であるように私には思えます。機能的には、どちらもポストバックをトリガーすることになっています。
他のヒント
あなたがやっていることはあなた自身のものではありません 想定 しかし、ここで「正しく」動作するのはおそらく IE だと思います。
リンクを提供する他の要素内にボタン要素を入れ子にしないでください。単に削除することができます button
内側から LinkButton
, 代わりに OnClick をアタッチし、スタイルを機能させると、うまくいきます。
IE が「正しく」動作していると思うと私が言った理由は、IE が最も内側のタグで定義したことを実行しているからです。それは何でもありません。(アクションを何も添付していません button
実際には要素です)。しかし実際には、そもそも動作が定義されていないと思うので、とにかく HTML で行うべきことではありません。
ここで何を達成しようとしていますか?
ネストされた HTML ボタンを備えたサーバー側のリンク ボタンがありますか?
LinkButton は、 ハイパーリンク ポストバックを実行できるようになります。
レンダリングされた HTML を見ましたか?アンカータグ内にボタンを配置することが有効な HTML であるかどうかはわかりません。
特定のサーバー側イベントによってポストバックを処理したい場合は、ASP:Button を使用してください。
そうでない場合は、通常の HTML ボタンを使用してください。
使用できます Cssクラス:
<asp:TemplateField HeaderText="Opciones">
<ItemTemplate>
<asp:LinkButton runat="server" Text="Hola!" CommandName="Deshabilitar"
CssClass="btn btn-primary"
CommandArgument='<%# Item.Id %>' />
</ItemTemplate>
</asp:TemplateField>