Casey Crookston Casey Crookston - 29 days ago 9
C# Question

Copying Models, View, & Controllers to a new solution: Resource cannot be found

I have an Area (collection of models, views, and controllers) in one solution that I need to copy into another solution. I have replicate the file structure inside the target solution, along with all the models, controllers, helpers, web.config, etc. But, when I try to navigate to the view in a browser, I get:

404: The resource cannot be found.


With the exception of namespaces (to match the target solution) all files are identical (no mismatching controller action names, etc). I've checked the RouteConfig.cs file in both solutions, and they match. I've checked the global.asax file. The folder/file structure is identical:

~/Area/NewArea/Views/SubArea/Index.cshtml


In both solutions, this opens in debug to:

http://localhost:xxxx/NewArea/SubArea/Index


In the source solution, it renders the page. In the target solution, it throws the error.

What am I missing?

Answer

Without looking at the complete code of the broken solution it will be a long shot, but I guess you are missing the override RegisterArea in the new solution.

You should have a class called: NewAreaRegistration.cs under your NewArea folder like this:

public class NewAreaRegistration : AreaRegistration
{
        public override string AreaName
        {
            get
            {
                return "NewArea";
            }
        }

        public override void RegisterArea(AreaRegistrationContext context)
        {
            context.MapRoute(
                "NewArea", // Route name
                "NewArea/{action}/{id}", // URL with parameters
                new { controller = "NewArea", action = "Index"  } // Parameter defaults
            );
        }
}