2008-11-04 43 views
9

Tôi có nút hình ảnh. Tôi muốn thêm văn bản "Tìm kiếm" trên đó. Tôi không thể thêm nó vì thuộc tính "imagebutton" trong VS 2008 không có điều khiển văn bản trong đó. Bất cứ ai có thể cho tôi biết làm thế nào để thêm văn bản vào một nút hình ảnh?Văn bản trên nút Hình ảnh trong C# asp.net 3.5

<asp:ImageButton ID="Searchbutton" runat="server" AlternateText="Search" 
     CssClass="bluebutton" 
     ImageUrl="../Graphics/bluebutton.gif" Width="110px" 
     onclick="Searchbutton_Click"/> 

Trả lời

20
<button runat="server" 
    style="background-image:url('/Content/Img/stackoverflow-logo-250.png')" > 
    your text here<br/>and some more<br/><br/> and some more .... 
    </button> 
+0

thể bạn vẫn sử dụng "onclick =" hoặc tùy chọn ASP.NET khác khi bạn render

+0

@TheChristopher: chắc chắn :) (tốt từ những gì tôi có thể nhớ lại; p) – leppie

+4

Để làm rõ, nó không phải là onclick khi bạn sử dụng nút, đó là ServerClick. – Peter

6

Bạn không thể làm điều đó với ImageButton.

Tuy nhiên, bạn có thể sử dụng đơn giản Button, đặt văn bản và thêm hình nền (bluebutton.gif) bằng cách sử dụng CSS để đạt được hiệu quả mong muốn.

0

Tôi không nghĩ bạn có thể viết văn bản vào điều khiển ImageButton của ASP.NET. Bạn có thể tạo hình ảnh khi đang bay nếu đó là những gì bạn cần và viết văn bản từ mã của bạn phía sau, nhưng nó sẽ quá phức tạp, thay vào đó hãy sử dụng nút bình thường với CSS, trừ khi hình ảnh của bạn không thể được tạo bởi CSS.

0

Bạn cũng có thể làm điều này bằng cách sử dụng asp: Label, như thế này:

<style type="text/css"> 
    .faux-button 
    { 
     cursor:pointer; 
    } 
</style> 

<div class="faux-button"> 
    <asp:ImageButton ID="ibtnAddUser" 
     runat="server" 
     ImageUrl="~/Images/add.gif" 
     AlternateText="Add a user image" /> 
    <asp:Label ID="lblAddUser" 
     runat="server" 
     Text="Add User" 
     AssociatedControlID="imgClick" /> 
</div> 
6

Mẹo này từ dotnetslave.com làm việc cho tôi:

<asp:LinkButton 
    CssClass="lnkSubmit" 
    ID="lnkButton" 
    runat="server">SUBMIT</asp:LinkButton> 

a.lnkSubmit:active 
{  
    margin:0px 0px 0px 0px; 
    background:url(../../images/li_bg1.jpg) left center no-repeat; 
    padding: 0em 1.2em; 
    font: 8pt "tahoma"; 
    color: #336699; 
    text-decoration: none; 
    font-weight: normal; 
    letter-spacing: 0px; 

}

1

Nó không thể thêm văn bản bên trong nút hình ảnh. Tôi cũng phải đối mặt với cùng một vấn đề. Giải pháp của tôi là sử dụng nút liên kết thay vì nút hình ảnh. Chỉ cần thêm hình ảnh vào thẻ kiểu sẽ hoạt động.

0

Tôi nhận thấy đây là một bài đăng cũ, nhưng gần đây tôi đã giải quyết vấn đề tương tự này cho bản thân mình.

tôi đã tạo một điều khiển máy chủ ImgButton để render này:

<button> <img src="button_icon.png" /> Caption Text </button> 

Sử dụng CSS để định dạng một hình nền có một số hạn chế, chủ yếu là:

  • Các văn bản có xu hướng chồng lên hình ảnh trừ khi bạn nhận được thông minh với hình ảnh được canh lề trái và văn bản được căn chỉnh bên phải (sau đó là bất tiện nếu bạn ném một ngôn ngữ RTL vào hỗn hợp)
  • Hình ảnh là hình nền và có vẻ không "trên nút" khi chúng tôi nhấp vào nút nó không được "đẩy xuống" giống như các văn bản

Tôi sẽ cố gắng để chèn mã ở đây, nhưng cũng có mã đầy đủ nguồn và các ví dụ ở đây: Button with Img tag and Caption Text

ImgButton.cs:

[DefaultProperty("Text")] 
[DefaultEvent("Click")] 
[ToolboxData("<{0}:ImgButton runat=server></{0}:ImgButton>")] 
public class ImgButton : WebControl, IPostBackEventHandler 
{ 
    #region Public Properties 

    public enum ImgButtonStyle 
    { 
     Button, 
     Anchor 
    } 

    [Bindable(true)] 
    [Category("Appearance")] 
    [DefaultValue("")] 
    [Localizable(true)] 
    public string Text 
    { 
     get 
     { 
      String s = (String)ViewState["Text"]; 
      return ((s == null) ? String.Empty : s); 
     } 

     set 
     { 
      ViewState["Text"] = value; 
     } 
    } 
    [EditorAttribute(typeof(System.Web.UI.Design.ImageUrlEditor), typeof(UITypeEditor))] 
    public string ImgSrc { get; set; } 
    public string CommandName { get; set; } 
    public string CommandArgument { get; set; } 
    [EditorAttribute(typeof(System.Web.UI.Design.UrlEditor), typeof(UITypeEditor))] 
    public string NavigateUrl { get; set; } 
    public string OnClientClick { get; set; } 
    public ImgButtonStyle RenderStyle { get; set; } 
    [DefaultValue(true)] 
    public bool UseSubmitBehavior { get; set; } 
    [DefaultValue(true)] 
    public bool CausesValidation { get; set; } 
    public string ValidationGroup { get; set; } 
    [DefaultValue(0)] 
    public int Tag { get; set; } 

    #endregion 

    #region Constructor 

    public ImgButton() 
    { 
     Text = "Text"; 
     ImgSrc = "~/Masters/_default/img/action-help.png"; 
     UseSubmitBehavior = true; 
     CausesValidation = true; 
    } 

    #endregion 

    #region Events 

    // Defines the Click event. 
    public event EventHandler Click; 
    public event CommandEventHandler Command; 

    protected virtual void OnClick(EventArgs e) 
    { 
     if (Click != null) 
     { 
      Click(this, e); 
     } 
    } 

    protected virtual void OnCommand(CommandEventArgs e) 
    { 
     if (Command != null) 
     { 
      Command(this, e); 
     } 
     RaiseBubbleEvent(this, e); 
    } 

    public void RaisePostBackEvent(string eventArgument) 
    { 
     if (CausesValidation) 
     { 
      Page.Validate(ValidationGroup); 
      if (!Page.IsValid) return; 
     } 
     OnClick(EventArgs.Empty); 
     if (!String.IsNullOrEmpty(CommandName)) 
      OnCommand(new CommandEventArgs(CommandName, CommandArgument)); 
    } 

    #endregion 

    #region Rendering 

    // Do not wrap in <span> tag 
    public override void RenderBeginTag(HtmlTextWriter writer) 
    { 
     writer.Write(""); 
    } 

    protected override void RenderContents(HtmlTextWriter output) 
    { 
     string click; 
     string disabled = (Enabled ? "" : "disabled "); 
     string type = (String.IsNullOrEmpty(NavigateUrl) && UseSubmitBehavior ? "submit" : "button"); 
     string imgsrc = ResolveUrl(ImgSrc ?? ""); 

     if (String.IsNullOrEmpty(NavigateUrl)) 
      click = Page.ClientScript.GetPostBackEventReference(this, ""); 
     else 
      if (NavigateUrl != null) 
       click = String.Format("location.href='{0}'", ResolveUrl(NavigateUrl)); 
      else 
       click = OnClientClick; 

     switch (RenderStyle) 
     { 
      case ImgButtonStyle.Button: 
       if (String.IsNullOrEmpty(NavigateUrl) && UseSubmitBehavior) 
       { 
        output.Write(String.Format(
         "<button id=\"{0}\" {1}class=\"{2}\" type=\"{3}\" name=\"{4}\" title=\"{5}\"><img src=\"{6}\" alt=\"{5}\"/>{7}</button>", 
         ClientID, 
         disabled, 
         CssClass, 
         type, 
         UniqueID, 
         ToolTip, 
         imgsrc, 
         Text 
        )); 
       } 
       else 
       { 
        output.Write(String.Format(
         "<button id=\"{0}\" {1}class=\"{2}\" type=\"{3}\" name=\"{4}\" onclick=\"javascript:{5}\" title=\"{6}\"><img src=\"{7}\" alt=\"{6}\"/>{8}</button>", 
         ClientID, 
         disabled, 
         CssClass, 
         type, 
         UniqueID, 
         click, 
         ToolTip, 
         imgsrc, 
         Text 
        )); 
       } 
       break; 

      case ImgButtonStyle.Anchor: 
       output.Write(String.Format(
        "<a id=\"{0}\" {1}class=\"{2}\" onclick=\"javascript:{3}\" title=\"{4}\"><img src=\"{5}\" alt=\"{4}\"/>{6}</a>", 
        ID, 
        disabled, 
        CssClass, 
        click, 
        ToolTip, 
        imgsrc, 
        Text 
       )); 
       break; 
     } 
    } 

    public override void RenderEndTag(HtmlTextWriter writer) 
    { 
     writer.Write(""); 
    } 

    #endregion 
} 

đây là CSS tôi sử dụng trên các nút của tôi (mà tôi đặt "biểu tượng" trong tài sản của nút CssClass):

button.icon 
{ 
    cursor: pointer; 
} 

button.icon img 
{ 
    margin: 0px; 
    padding: 0px 5px 0px 5px; 
    vertical-align: middle; 
} 
0

Nếu bạn sử dụng nút Liên kết, bạn có thể thêm nút khởi động và sau đó thêm văn bản qua thuộc tính CSS "after".

LinkButton:

<asp:LinkButton id="download" CssClass="btn btn-primary" Text="Download" OnCommand="OnButtonClick" CommandName="Download" runat="server"> 
       <span aria-hidden="true" class="glyphicon glyphicon-download-alt"></span></asp:LinkButton> 

CSS:

#MainContent_download:after{ 
content: "Download"; 
padding-left: 5px; 

}

Các vấn đề liên quan