Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何使Url.Action()识别引用的Razor类库中定义的区域?_C#_Asp.net Core_Razor_Asp.net Core Mvc_Razor Class Library - Fatal编程技术网

C# 如何使Url.Action()识别引用的Razor类库中定义的区域?

C# 如何使Url.Action()识别引用的Razor类库中定义的区域?,c#,asp.net-core,razor,asp.net-core-mvc,razor-class-library,C#,Asp.net Core,Razor,Asp.net Core Mvc,Razor Class Library,在我的ASP.NET核心项目的Razor中,我使用的Url.Action()如下所示: @Url.Action("Index", "Foo", new {Area = "MyArea"}) 控制器操作在引用的Razor类库中定义,如下所示: [Route("MyArea/Foo")] [Authorize] public class FooController : Controller { [HttpPost] public IActionResult Index()

在我的ASP.NET核心项目的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核心项目,在Visual Studio代码编辑器中,MyArea显示为红色,悬停工具提示状态为“无法解析区域‘MyArea’”。当然,我对Url.Action()的调用返回string.Empty

但这条路线是有效的

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

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

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

}
区域是路线的不同部分,因为它们被命名。。因此,您必须使用
[Area()]
,否则它不知道您要的路线是什么。按照惯例,
Foo
路由是已知的,因为它是控制器的名称。这假设您在
startup.cs
中的
Configure()
方法中正确映射了路由。这还假设您正在使用区域文件夹,其中包含一个名为MyArea的文件夹