ASP.NET Core 3.0 控制器路由无法工作

5

免责声明:我是ASP.NET Core / Razor / MVC的新手,并且开始使用3.0预览版。

我想在我的页面上有一个“按钮”,可以向列表中添加一个新的空项,以便用户可以输入一些值。从我所读到的(相当多),似乎将超链接指向控制器是正确的方法。但是,我无法使其正常工作。以下是我的代码:

指向控制器/操作的链接:

<a class="btn btn-success" asp-controller="Customer" asp-action="AddProduct">New Product</a>

控制器:

    public class CustomerController : Controller
{
    public void AddProduct()
    {

        var tmp = "";

    }

    public string Index()
    {
        return "This is my default action...";
    }

    public string Welcome()
    {
        return "This is the Welcome action method...";
    }

}

Startup.cs路由是默认的:

        app.UseRouting(routes =>
        {
            routes.MapRazorPages();
        });

使用这个设置,如果我点击开始按钮,我会看到URL更改为下面的内容,但是没有其他任何反应(例如没有触发断点): https://localhost:44358/Customers/Create?action=AddProduct&controller=Customer 我尝试将路由添加到UseRouting代码中,像这样:
            app.UseRouting(routes =>
        {
            routes.MapRazorPages();
            routes.MapControllerRoute(
                name: "Customer",
                template: "{controller=Customer}/{action=Welcome}");
        });

但是当我这样做时,似乎出现了问题,文本颜色发生了变化(从白色变成黑色),而且当我点击它时什么都没有发生。你有任何想法吗?
我还有一个问题,就是如何从控制器中访问模型数据?

我建议你先通过初学者教程开始学习。我甚至不知道你是否应该使用 Razor Pages 或 MVC,它们只是构建应用程序的两种不同方式。 - Johan Herstad
应该使用MapRoute(),而不是MapControllerRoute()。正如@JohanHerstad所说,混合使用页面和MVC路由可能会产生奇怪的结果。 - mvermef
有趣的是,我确实阅读了几篇教程,但我没有感觉到它是这样还是那样。你如何只用Razer与C#代码交互? - Yecats
我在从2.2迁移到3之后遇到了同样的问题。你找到解决方案了吗? - m4rcel
我没有 - 我认为在这个点上只是一个错误。 - Yecats
1个回答

2

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接