IgnoreRoute in ASP.MVC

asp.net, asp.net-mvc, ignoreroute, url-routing

Solution

The `Views` folder is, well for views, and javascript should be put elsewhere. That's why the designers of the MVC framework put a `web.config` in this `Views` folder that denies access to any file inside. You could modify this defaut setting but be warned that this could be a potential security hole. So open the `web.config` file located in the `Views` folder and:

Replace:

<httpHandlers>
  <add path="*" verb="*" type="System.Web.HttpNotFoundHandler"/>
</httpHandlers>

with:

<httpHandlers>
  <add path="*.aspx" verb="*" type="System.Web.HttpNotFoundHandler"/>
  <add path="*.master" verb="*" type="System.Web.HttpNotFoundHandler"/>
  <add path="*.ascx" verb="*" type="System.Web.HttpNotFoundHandler"/>
</httpHandlers>

Navigate to `http://yoursite/Views/test.js`

P.S. You could also remove all the `IgnoreRoutes` you put in `global.asax`.

Problem

I am trying to access a .js file in the views directory. I have an MVC application with /Views/Home/MyControl.ascx I have a js file /Views/Home/MyControl.js I wish to reference the .js file and keep it with the control. I have tried the following entries in the routing, and none seem to work. ``` routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); routes.IgnoreRoute("{file}.js"); routes.IgnoreRoute("{resource}.js/{*pathInfo}"); routes.IgnoreRoute("{controller}/{resource}.js/{*pathInfo}"); routes.IgnoreRoute("{*alljs}", new { alljs = @".*\.js(/.*)?" }); ``` Please help, please don't suggest adding the .js file to the scripts directory. I would like to make it work this way, or know why it cannot be done. I would put the script into the page, only script debugging is broken in VS2010 B2. Thanks Regards Craig.

Original source