The issue that people are coming up against is that they have a script include with a relative path to their script file. Because ASP.NET MVC uses URL routing, the browser will treat the relative path differently depending on your current location. Here’s a quick example…
You have referenced a script as you normally might, like this.
On your average web page, this works just fine. The problem is, this same script reference could appear on “www.stevefenton.co.uk” or it could appear on “www.stevefenton.co.uk/MyController/” or even “www.stevefenton.co.uk/MyController/MyAction/”. In this last case, the browser would be looking for the script located at “www.stevefenton.co.uk/MyController/MyAction/Scripts/MyScript.js” and it isn’t there.
This is a really easy problem to solve, using a quick and sly bit of “Url.Content”, as demonstrated below.
<script src="<%= Url.Content("~/Scripts/MyScript.js") %>"></script>
Please note! There is also an even easier fix… take note of the leading slash, which advises the browser that the path is relative to the root of the website.
The only time
Url.Content beats this simple fix is if your deployments are not always to the root of a website.