gpt4 book ai didi

c# - 在 ASP.net 5 MVC 6 中,如何在不同的命名空间中使用相同的 Controller 名称

转载 作者:行者123 更新时间:2023-11-30 20:39:19 24 4
gpt4 key购买 nike

我在不同的命名空间中定义了两个具有相同 Controller 名称的 Controller 。并得到一个异常(exception)。如何使用参数“dataTokens”来定义 Controller 的命名空间,如 mvc-4?

异常(exception)情况如下:

AmbiguousActionException: Multiple actions matched. The following actions matched route data and had all constraints satisfied:

Alice.Controllers.TestController.Index
Alice.Controllers.Api.TestController.Index
Microsoft.AspNet.Mvc.Infrastructure.DefaultActionSelector.SelectAsync(RouteContext context)

Controller /Api/TestController.cs:

namespace Alice.Controllers.Api
{
//[Route("api/[controller]")]
public class TestController : Controller
{
//[Route("[action]")]
public string Index()
{
return "this is controller at Alice.Controllers.Api"; ;
}
}
}

Controller /测试 Controller .cs:

namespace Alice.Controllers
{
//[Route("[controller]")]
public class TestController : Controller
{
//[Route("[action]")]
public string Index()
{
return "this is controller at Alice.Controllers";
}
}
}

启动.cs

        app.UseMvc(routes =>
{
routes.MapRoute(
name: "default",
template: "{controller}/{action}",
defaults: null,
constraints: null,
dataTokens: new { Namespaces = new[] { "Alice.Controllers" } });

routes.MapRoute(
name: "api",
template: "api/{controller}/{action}",
defaults: null,
constraints: null,
dataTokens: new { Namespaces = new[] { "Alice.Controllers.Api" } });
});

如果需要更多详细信息,请询问。

最佳答案

不幸的是,默认情况下,您不能在 ASPNET MVC 区域中(或区域与应用程序的根之间)具有重复的 Controller 名称。幸运的是,对此的修复非常简单,异常描述了您需要采取的步骤。一旦你添加了一个区域,你将有两个不同的地方(默认情况下)定义路由:一个在你的根应用程序中,一个在你的区域注册中。您将需要调整它们以指定 namespace 参数。 more details check here

关于c# - 在 ASP.net 5 MVC 6 中,如何在不同的命名空间中使用相同的 Controller 名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34472948/

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