1

我正在将我的asp.net 应用程序上的ImageButtons 更新为扩展ImageButton 的WebControl,我称之为CSSImageButton。我已经覆盖了渲染方法,所以我可以让它们与 css sprites 一起工作。我已经设法让 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-sprites 的适当类

来源

于 2010-11-12T09:31:55.703 回答
0

@roman m:这种方法的问题(取决于您的情况)是最终将 div 嵌套在无法通过 HTML 验证的锚点(“栏”)中。

当然,如果这不是问题,那么您的建议将解决问题,但是从标记/验证的角度来看,Etienne 的解决方案更“自然”。

只是我的 $.02

于 2011-12-16T20:59:06.730 回答
0

在您的属性ImageUrlImageButton,您可以放置​​一个指向透明图像的链接(其大小为 1x1 像素,例如:spacer.png)。然后在你的 CSS 中放置一个背景图片,带有宽度和高度。

因此,在您使用 的任何地方,ImageButton您都会调用相同的透明图像(保留在浏览器缓存中)。

于 2011-11-18T03:01:25.087 回答