簡體   English   中英

如何讓 Url.Action() 識別在引用的 Razor 類庫中定義的區域?

[英]How can I make Url.Action() recognize areas defined in referenced Razor Class Libraries?

在我的 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?

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

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

}

區域是路線的不同部分,因為它們被命名。所以你必須使用[Area()]否則它不知道你在要求什么路線。 按照慣例, Foo路由是已知的,因為它是控制器的名稱。 這假設您在startup.csConfigure()方法中正確映射了路由。 這還假定您正在使用帶有名為 MyArea 的文件夾的 Area 文件夾。

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM