Using the ImageUrl property of the HyperLink control

  • Thread starter Thread starter Nathan Sokalski
  • Start date Start date
N

Nathan Sokalski

I have several HyperLink controls on my site in which I use the ImageUrl
property to display them as an image. This generates something like the
following:

<a><img/></a>

I would like to specify the height and width of the image, but if I use the
HyperLink's Height and Width properties, something like the following is
generated:

<a style="display:inline-block;height:100px;width:100px;"><img/></a>

My basic problem here is that there is no way to add style to the image.
Yes, I know that I could make the HyperLink and image separate controls or
create a CSS class that uses a child selector. But we all know that it is
good practice to set the width and height of images, so why did they give
the HyperLink an ImageUrl property if you can't specify it's width and
height? In my opinion, the HyperLink is very poorly designed when it comes
to creating graphical hyperlinks.
 
Its probably easier to just use the img itself i.e.
<a href="bla"><img src="bla" width="64" height="64"></a>
 
Yep you are right. The ImageUrl is pretty useless if you want to
control the attributes of the image.
But the control also provides you with the ability to add subcontrols.
For example:

Image img = new Image();
img.ImageUrl = "picture.jpg";
img.Width = new Unit(150, UnitType.Pixel);
img.Height = new Unit(150, UnitType.Pixel);

MyHyperLinkControl.Controls.Add(img);

That would probably work pretty much the way you want, and you can
access all attributes of the image.

///Patrik
 
You are correct in your solution, but I was looking for a way to do this
declaratively using only the HyperLink control. Please don't bother to tell
me some other combination of tags/controls that will produce what I
mentioned, because I know how to do it that way. Basically all I am saying
in this post is that there are certain things that a control should give you
access to, and in my opinion the HyperLink does not do that.
--
Nathan Sokalski
(e-mail address removed)
http://www.nathansokalski.com/

Patrik said:
Yep you are right. The ImageUrl is pretty useless if you want to
control the attributes of the image.
But the control also provides you with the ability to add subcontrols.
For example:

Image img = new Image();
img.ImageUrl = "picture.jpg";
img.Width = new Unit(150, UnitType.Pixel);
img.Height = new Unit(150, UnitType.Pixel);

MyHyperLinkControl.Controls.Add(img);

That would probably work pretty much the way you want, and you can
access all attributes of the image.

///Patrik
 
I don't understand how this glaring omission hasn't been fixed by Microsoft.
Don't they care that developers see stuff like this and think 'PHP please' or
'JSP whatever'. I get so frustrated by this kind of crap - they need to fire
all the suits with their marketing garbage and hire a few more developers.

Nathan Sokalski said:
You are correct in your solution, but I was looking for a way to do this
declaratively using only the HyperLink control. Please don't bother to tell
me some other combination of tags/controls that will produce what I
mentioned, because I know how to do it that way. Basically all I am saying
in this post is that there are certain things that a control should give you
access to, and in my opinion the HyperLink does not do that.
 
Back
Top