You have to use relative paths all over your app:
~
won’t work within static html code.
You can write
<img src="https://stackoverflow.com/questions/8574237/@Url.Content("https://stackoverflow.com/questions/8574237/~/images/logos/hdr.png")" />
or
<img src="https://stackoverflow.com/questions/8574237/images/logos/hdr.png" />
The first approach is good for layout files where your relative path might be changing when you have different length routing urls.
EDIT
Regarding to your question about normal links:
When linking to another page in your app you don’t specify the view file as the target but the action which renders a view as the result. For that you use the HtmlHelper ActionLink
:
@Html.ActionLink("Linktext", "YourController", "YourAction")
That generates the right url for you automatically:
<a href="https://stackoverflow.com/questions/8574237/YourController/YourAction">Linktext</a>
EDIT 2
Ok, no MVC – so you have to generate your links yourself.
You have to use relative paths, too. Don’t start any link with the /
character!
<a href="https://stackoverflow.com/questions/8574237/linkOnSameLevel.cshtml">Link</a>
<a href="http://stackoverflow.com/linkOnParentLevel.cshtml">Link</a>
<a href="subFolder/linkOnOneLevelDown.cshtml">Link</a>
EDIT 3
When using Layout pages you can use the Href
extension method to generate a relative url:
<link href="https://stackoverflow.com/questions/8574237/@Href("~/style.css")" ...