Adding server controls programmatically(Noob Question) missinghyperlink text

Discussion in 'ASP .Net' started by alun65, Jan 16, 2008.

  1. alun65

    alun65 Guest

    I'm attempting to programmatically build up some HTML in the code
    behind. Like so:

    // Create Hyperlink
    HyperLink link = new HyperLink();
    link.NavigateUrl = "nice cat";
    link.Text = "Cats Sleeping";

    //Create Image
    Image img = new Image();
    img.ImageUrl = "http://www.cats.org.uk/images/lhstop_home2.jpg";

    //Add image nested in the hyperlink
    link.Controls.Add(img);

    //Add the link with it's controls to a placeholder
    PlaceHolder1.Controls.Add(link);

    When I run the code I'm expecting an picture of a cat with the text
    'Cats Sleeping' all enclosed in anchor tags. But instead all I get is
    the image but no text. What am I doing wrong?
     
    alun65, Jan 16, 2008
    #1
    1. Advertisements

  2. What's probably happening is the image is replacing the text since they
    technically want to fill the same spot. Instead of setting the text property
    of the link, try doing something like creating the text as a literal then
    adding the literal to the link's control collection.

    Literal myText = new Literal();
    myText.Text = "Cats Sleeping";
    link.Controls.Add(myText);
     
    Mark Fitzpatrick, Jan 16, 2008
    #2
    1. Advertisements

  3. alun65

    Manish Guest

    Hi,

    You would need to make the Hyperlink control as the container to show both
    the text and image control in the Hyperlink control because this is the
    default behavior of the Hyperlink control to replace the text with the image.

    protected void Page_Load(object sender, EventArgs e)
    {
    // Create Hyperlink
    HyperLink link = new HyperLink();
    link.NavigateUrl = "nice cat";
    //link.Text = "Cats Sleeping";
    //link.ImageUrl = "http://www.cats.org.uk/images/lhstop_home2.jpg";

    Label lb = new Label();
    lb.Text = "Cats Sleeping";

    link.Controls.Add(lb);
    //Create Image
    Image img = new Image();
    img.ImageUrl = "http://www.cats.org.uk/images/lhstop_home2.jpg";

    //Add image nested in the hyperlink
    link.Controls.Add(img);

    //Add the link with it's controls to a placeholder
    PlaceHolder1.Controls.Add(link);

    }

    Regards,
    Manish
    www.ComponentOne.com
     
    Manish, Jan 16, 2008
    #3
  4. alun65

    marss Guest



    Try this:

    HyperLink link = new HyperLink();
    link.NavigateUrl = "nice cat";
    link.Text = string.Format("<img src='{0}'><br>{1}", "http://
    www.cats.org.uk/images/lhstop_home2.jpg", "Cats Sleeping");
    PlaceHolder1.Controls.Add(link);

    Regards,
    Mykola
    http://marss.co.ua - Casual ideas for web development
     
    marss, Jan 16, 2008
    #4
  5. alun65

    alun65 Guest

    Thanks for both your great answers, that's excatly what's been
    happening. And thanks for the bit of code Manish I'll use it. Many
    thanks Again
     
    alun65, Jan 16, 2008
    #5
    1. Advertisements

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments (here). After that, you can post your question and our members will help you out.