gpt4 book ai didi

asp.net-mvc - 我的项目中存在多个同名 Controller 的问题

转载 作者:行者123 更新时间:2023-12-03 04:56:23 24 4
gpt4 key购买 nike

我的 ASP.NET MVC 3 项目遇到以下错误:

Multiple types were found that match the controller named 'Home'. This can happen if the route that services this request ('Home/{action}/{id}') does not specify namespaces to search for a controller that matches the request. If this is the case, register this route by calling an overload of the 'MapRoute' method that takes a 'namespaces' parameter.

The request for 'Home' has found the following matching controllers: MyCompany.MyProject.WebMvc.Controllers.HomeController MyCompany.MyProject.WebMvc.Areas.Company.Controllers.HomeController

我的默认 Controller 文件夹中有一个 HomeController,其类名称为 MyCompany.MyProject.WebMvc.Controllers.HomeController。

我的 Global.asax 中的 RegisterRoutes 方法如下所示:

    public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

routes.MapRoute(
"Default", // Route name
"{controller}/{action}/{id}", // URL with parameters
new { controller = "Home", action = "Index", id = UrlParameter.Optional } // Parameter defaults
);
}

然后,我有一个名为 Company 的区域,该区域的默认 Controller 文件夹中有一个 HomeController,其类名称为 MyCompany.MyProject.WebMvc.Areas.Company.Controllers.HomeController。

CompanyAreaRegistration 文件中的 RegisterArea 方法如下所示:

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

这一切都导致了我在本文开头强调的错误。我正在努力尝试从其他各种帖子中拼凑出一个解决方案,但没有运气

是否可以在默认 Controller 文件夹中拥有一个 HomeController,然后在每个区域中拥有一个 HomeController?如果是这样,我是否需要(假设我这样做)更改我的配置文件才能使其工作?

任何帮助将不胜感激!

最佳答案

错误消息包含建议的解决方案:“如果是这种情况,请通过调用采用“namespaces”参数的“MapRoute”方法的重载来注册此路由。”

routes.MapRoute(
"Default", // Route name
"{controller}/{action}/{id}", // URL with parameters
new { controller = "Home", action = "Index", id = UrlParameter.Optional }, // Parameter defaults
new string[] { "MyCompany.MyProject.WebMvc.Controllers"}
);

这将使 http://server/转到 HomeController 的 Index 操作,我认为这就是您想要的。 http://server/company/home将转到公司区域的 HomeController 的索引操作,如区域注册中所定义。

关于asp.net-mvc - 我的项目中存在多个同名 Controller 的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5092589/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com