расширение asp.net ImageButton для CSS Sprite - PullRequest
1 голос
/ 03 декабря 2009

Я обновляю свои ImageButtons в моем приложении asp.net до WebControl, который расширяет ImageButton, который я назвал CSSImageButton. Я переопределил методы рендеринга, чтобы я мог заставить их работать со спрайтами 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>");
    }

}

Ответы [ 3 ]

2 голосов
/ 12 ноября 2010

Кроме того, вы можете заменить ImageButton на LinkButton, и внутри него есть div с подходящим классом для css-спрайтов

Источник

0 голосов
/ 17 декабря 2011

@ roman m: проблема с этим подходом (в зависимости от вашей ситуации) заключается в том, что в конечном итоге вложенный div будет помещен в якорь ("bar"), который не пройдет проверку HTML.

Конечно, если это не проблема, то то, что вы предлагаете, решит проблему, однако решение Этьена более "естественно" с точки зрения разметки / проверки.

Только мои $ .02

0 голосов
/ 18 ноября 2011

В свойстве ImageUrl вашего ImageButton вы можете разместить ссылку на прозрачное изображение (размером 1x1 пиксель, например: spacer.png). Затем в своем CSS вы помещаете на него фоновое изображение шириной и высотой.

Таким образом, в любом месте, где вы используете ImageButton, вы вызываете одно и то же прозрачное изображение (которое остается в кэше браузера).

...