1

asp.netアプリケーションのImageButtonを、CSSImageButtonと呼ばれるImageButtonを拡張するWebControlに更新しています。レンダリングメソッドをオーバーライドして、cssスプライトで機能させることができます。OnClickとOnClientClickを機能させることができました。しかし、一部のボタンにはOnCommandがあり、何をすべきかわかりません。

 public class CSSImageButton : ImageButton
{
    public string DivClass { get; set; }


    public CSSImageButton()
    {
        CssClass = "";
    }

    protected override void Render(HtmlTextWriter writer)
    {
        base.Render(writer);
    }

    public override void RenderBeginTag(HtmlTextWriter writer)
    {
        writer.Write("<div class=\"" + CssClass + " " + DivClass + "\">");
    }


    protected override void RenderContents(HtmlTextWriter writer)
    {
        writer.Write("<a id=\"" + this.ClientID + "\" title=\""+ this.ToolTip+"\"");
        if (!String.IsNullOrEmpty(OnClientClick))
        {
            writer.Write(" href=\"javascript:void(0);\" OnClick = \"" + OnClientClick + "\"");
        }
        else
        {
            writer.Write(" href=\"javascript:" + this.Page.GetPostBackEventReference(this, "ButtonClick") + "\"");
        }
        writer.Write("\"></a>");
    }

    public override void RenderEndTag(HtmlTextWriter writer)
    {
        writer.Write("</div>");
    }

}
4

3 に答える 3

2

または、ImageButton を LinkBut​​ton に置き換え、その中に div を css-sprite の適切なクラスで配置することもできます。

起源

于 2010-11-12T09:31:55.703 に答える
0

@roman m: このアプローチの問題 (状況によって異なります) は、HTML 検証に合格しないアンカー (「バー」) 内に div がネストされることです。

確かに、それが問題ではない場合、あなたが提案することで問題は解決しますが、マークアップ/検証の観点から見ると、エティエンヌのソリューションはより「自然」です。

0.02 ドル

于 2011-12-16T20:59:06.730 に答える