C# MVC 5, RouteJs returns HTML instead of JS

689 Views Asked by At

I installed RouteJS for MVC 5 via NuGet and followed the installation instructions, but the contents of _Layout.cshtml and a status of 200 is returned when attempting to load <script src='/routejs.axd/251810a87f19ffe842a619acc9a90d73349ba4fa/router.js'></script>.

I'm running MVC 5, C#, and IIS Express 8. I've tried a new variations of the Web.config that I found on its GitHub / NuGet website. Is additional configuration required if I'm using areas?

#_Layout.cshtml
#This works
<script src="@RouteJs.RouteJsHandler.HandlerUrl"></script>

#Web.config
<configSections>
    <section name="routeJs" type="RouteJs.RouteJsConfigurationSection, RouteJs" />
</configSections>

#This section by itself will break the application.
#Added the 'validation' line to system.webServer to prevent an error
#I've tried running RouteJS with and without this section.
<system.web>
    <httpHandlers>
        <add verb="GET" path="routejs.axd" type="RouteJs.RouteJsHandler, RouteJs" />
    </httpHandlers>
</system.web>

<system.webServer>
    <handlers>
        <validation validateIntegratedModeConfiguration="false"/>
        <add name="RouteJs" verb="GET" path="routejs.axd" type="RouteJs.RouteJsHandler, RouteJs" />
    </handlers>
</system.webServer>

<routeJs exposeAllRoutes="true" />

#RegisterRoutes
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
1

There are 1 best solutions below

5
clement On

You have to declare this kind of code for the area in order to add the route:

public class AdminAreaRegistration : AreaRegistration
    {
        public override string AreaName
        {
            get
            {
                return "Admin";
            }
        }

        public override void RegisterArea(AreaRegistrationContext context)
        {
            context.MapRoute(
                "Admin_default",
                "Admin/{controller}/{action}/{id}",
                new { action = "Index", id = UrlParameter.Optional }
            );
        }
    }