在 ASP.NET Core 中未调用操作

问题描述 投票:0回答:1

我的 ASP.NET Core 项目的新操作不起作用,也没有被调用,而我的其他控制器和操作工作正常。

这是我的控制器代码:

using Microsoft.AspNetCore.Mvc;

namespace PresentationLayer.Areas.dashboard.Controllers
{
    public class Weblog : Controller
    {
        [Area("dashboard")]
        public IActionResult Index()
        {
            return View();
        }

        public IActionResult AddWeblog()
        {
            return View();
        }
    }
}

我的

index
操作工作正常,但我的
AddWeblog
方法不再被调用。

操作的名称与视图的名称相同。

此控制器位于区域中,而在此之前的其他控制器可以正常工作,但在这之后,当我添加任何控制器时,只需索引操作即可工作,为什么?

我清理了解决方案,重新启动了 Visual Studio,删除了控制器并重写了它,但没有任何效果。

c# visual-studio asp.net-core action
1个回答
0
投票

Area
属性需要应用于Controller类,但不能应用于Action方法。

[Area("dashboard")]
public class Weblog : Controller
{
    ...
}

另外,请确保您已在中间件管道中添加区域路由。

对于 ASP.NET Core 版本 6 以下

app.UseEndpoints(endpoints =>
{
    endpoints.MapAreaControllerRoute(
        name: "Dashboard",
        areaName: "Dashboard",
        pattern: "dashboard/{controller=Home}/{action=Index}/{id?}");

    endpoints.MapControllerRoute(
        name: "default",
        pattern: "{controller=Home}/{action=Index}/{id?}");
});

适用于 ASP.NET Core 6 或以上版本

app.MapAreaControllerRoute(
    name: "Dashboard",
    areaName: "Dashboard",
    pattern: "dashboard/{controller=Home}/{action=Index}/{id?}");

app.MapControllerRoute(
    name: "default",
    pattern: "{controller=Home}/{action=Index}/{id?}");
© www.soinside.com 2019 - 2024. All rights reserved.