Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to specify virtual path for image in ASP.Net MVC razor helper

In my razor style helper class (located in the App_Code folder, I've got this line of code:

<img src="../../Content/images/ajax_activity.gif" alt="loading"/>

This works fine in Cassini, but when I deploy the app to IIS (virtual directory), IIS can't find the path. The virtual path is being ignored. This also doesn't work:

<img src="@Href("~/Content/images/ajax_activity.gif")" alt="loading" />
like image 213
zszep Avatar asked Mar 25 '12 23:03

zszep


2 Answers

You could use @Url.Content method to convert virtual relative path to absolute application path like this:

<img [email protected]("~/images/picture.png") alt="picture description">

It'll be converted in this HTML code forwarded to client:

<img src="/appname/images/picture.png" alt="picture description">

UPDATE: In other hand you could convert image to base64 and it will be displayed correctly too:

<img src="data:image/png;base64,iVBORw0KG...SuQmCC" alt="picture description">
like image 200
almaceleste Avatar answered Sep 18 '22 11:09

almaceleste


OK, solved it, though I'm not really sure why it's working. After trying all the following combinations without success:

<img src="../Content/images/ajax_activity.gif" alt="loading"/>
<img src="/Content/images/ajax_activity.gif" alt="loading"/>
<img src="~/Content/images/ajax_activity.gif" alt="loading"/>
<img src="Content/images/ajax_activity.gif" alt="loading"/>

the following finally worked as expected

<img src="./Content/images/ajax_activity.gif" alt="loading"/>

It returned the image path correctly with the virtual directory set. Anyone able to explain this?

like image 39
zszep Avatar answered Sep 16 '22 11:09

zszep