You have to use relative paths all over your app:
~ won’t work within static HTML code.
You can write
<img src="@Url.Content("~/images/logos/hdr.png")" />
or
<img src="../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.
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="YourController/YourAction">Linktext</a>
If you are not using MVC, you have to generate your links yourself. You have to use relative paths, too. Don’t start any link with the / character!
<a href="linkOnSameLevel.cshtml">Link</a>
<a href="../linkOnParentLevel.cshtml">Link</a>
<a href="subFolder/linkOnOneLevelDown.cshtml">Link</a>
When using Layout pages you can use the Href extension method to generate a relative URL:
<link href="@Href("~/style.css")" ...