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;
}

ご覧のとおり、特別なことは何もありません。ただ色と美しいもの。
青い[編集]ボタンをクリックすると、ChromeでOnClickポストバックが正常に起動します。
しかし、IE8で同じことをすると、何もしません。クリックも検出しません。

問題を特定しやすくするために、タグを削除して「編集」という単語だけを残しました。IE8では、単純な下線付きのリンクとして問題なく機能します。ポストバックが発砲します。

では、なぜIE8はLinkBut​​ton内で何も受け入れられないのでしょうか。

4

4 に答える 4

4

ポストバックを処理し、同時にボタンのように見える必要がある場合、なぜLinkBut​​tonを使用するのですか?ただのボタンにしてみませんか?どちらか一方を使用する唯一の理由は外観にあるように私には思えます。機能的には、両方ともポストバックをトリガーすることになっています。

于 2010-10-20T00:31:54.267 に答える
1

あなたがしていることはあなたがすることになっていることではありませんが、IEはおそらくここで「正しく」最も近くに動作しているものだと思います。

リンクを提供する他の要素の中にボタン要素をネストしないでください。buttonの内側からを削除し、LinkButton代わりにOnClickをアタッチするだけで、スタイリングが機能するようになります。

IEが「正しく」動作していると私が思う理由は、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 に答える