首页 > 解决方案 > .net 3.0 中的路由 - 路由参数和操作参数

问题描述

.net core 3.0 web 应用程序,带有 razorpages 和 api

我的 api 控制器位于文件夹“/api”中,其中一个具有默认的 Get 方法,我想使用路由参数和 2 个其他值调用该方法

[HttpGet("{customer}")]
public IActionResult Get(string customer, string size, string color)

尝试使用参数路由到这样的路径
http get localhost://site-root/api/mycontroller/ABC?size=val1&color=val2
其中“ABC”将映射到我的控制器中的路由参数“customer”但是这不会路由。

...在启动中配置的路由中

 app.UseEndpoints(endpoints =>
    {
        endpoints.MapControllers();
        endpoints.MapControllerRoute(name: "api", pattern: "api/[controller]/[action]");
        endpoints.MapRazorPages();
    });

标签: asp.net-coreasp.net-core-webapi

解决方案


问题似乎在于您如何注册路线。它应该是:

 app.UseEndpoints(endpoints =>
    {
        endpoints.MapControllers();
        endpoints.MapControllerRoute(name: "api", pattern: "api/[controller]");
        endpoints.MapRazorPages();
    });

在您的代码中,您期望一个“[action]”,因此,“ABC”文本被映射为一个动作,而不是作为函数的参数。


推荐阅读