Multiple Controllers with one Name in ASP.NET MVC 2

后端 未结 6 1033
情深已故
情深已故 2021-01-11 14:40

I receive the following error when trying to run my ASP.NET MVC application:

The request for \'Account\' has found the following matching controllers:

6条回答
  •  没有蜡笔的小新
    2021-01-11 15:19

    A slightly confusing variation on the problem (similar in that it causes the same error message) can occur even with namespaces supplied. MVC 3 I think is a little pickier than MVC 2 on this front.


    Short Answer:

    Make sure the namespace of your controller is in fact the namespace specified in the MapRoute call!!


    Long Answer:

    I have 3 areas : default ("") / Facebook / Store and they each have AdminController

    I have the route mapped like this (for my default area):

    routes.MapRoute(
         "Default",
         "{controller}/{action}/{id}",
         new { controller = "Gateway", action = "Index", id = UrlParameter.Optional },
         new string[] { "RR.Controllers.Main" }
    );
    

    A request to /admin gave the following error :

    Multiple types were found that match the controller named 'admin'. This can happen if the route that services this request ('{controller}/{action}/{id}') does not specify namespaces...

    The request for 'admin' has found the following matching controllers:

    RR.FacebookControllers.AdminController
    RR.Controllers.AdminController
    RR.StoreControllers.AdminController

    But wait a minute! Didn't I specify the controller namespace.... ? What's going on.... ?

    Well it turned out my default area's admin controller namespace was RR_MVC.Controller instead of Rolling_Razor_MVC.Controller.Main.

    For some reason in MVC 2 this didn't give a problem, but in MVC 3 it does. I think MVC 3 just requires you to be more explicit when there's potential ambiguities.

提交回复
热议问题