0

在我的 ASP.NET Core 项目的 Razor 中,我正在使用 Url.Action(),如下所示:

@Url.Action("Index", "Foo", new {Area = "MyArea"})

控制器操作在引用的 Razor 类库中定义,如下所示:

[Route("MyArea/Foo")]
[Authorize]
public class FooController : Controller
{

    [HttpPost]
    public IActionResult Index()
    {
        return Ok();
    }

}

回到我的 ASP.NET Core 项目,在 Visual Studio 代码编辑器中,MyArea 显示为红色,悬停工具提示显示“无法解析区域 'MyArea'”。当然,我对 Url.Action() 的调用返回 string.Empty....

但路线是有效的。

我可以对我的 ASP.NET Core 项目或引用的 RCL 应用哪些更改以使 MyArea 被识别为有效区域,并使调用 Url.Action() 返回预期的 URL?

4

1 回答 1

0
[Area("MyArea")]
[Authorize]
public class FooController : Controller
{

    [HttpPost]
    public IActionResult Index()
    {
        return Ok();
    }

}

区域是路线的不同部分,因为它们被命名。所以你必须使用,[Area()]否则它不知道你对路线的要求。按照惯例,Foo路由是已知的,因为它是控制器的名称。这假设您Configure()startup.cs. 这还假设您使用的是 Area 文件夹,其中包含一个名为 MyArea 的文件夹。

https://docs.microsoft.com/en-us/aspnet/core/mvc/controllers/areas?view=aspnetcore-3.1

于 2020-02-29T07:30:51.793 回答