Asp.net mvc MVC核心路由问题

Asp.net mvc MVC核心路由问题,asp.net-mvc,asp.net-core,routing,Asp.net Mvc,Asp.net Core,Routing,我有一个MVC核心站点,设置了默认路线: public void Configure(IApplicationBuilder app) { app.UseMvcWithDefaultRoute(); } 它创建规则{controller=Home}/{action=Index}/{id?} 我有一个链接,它是使用像这样的标记帮助器生成的 <a asp-controller="Help" asp-action="privacy-policy" asp-route-id="@Mod

我有一个MVC核心站点,设置了默认路线:

public void Configure(IApplicationBuilder app)
{
    app.UseMvcWithDefaultRoute();
}
它创建规则{controller=Home}/{action=Index}/{id?}

我有一个链接,它是使用像这样的标记帮助器生成的

 <a asp-controller="Help" asp-action="privacy-policy" asp-route-id="@Model.id" target="_blank">
        privacy policy
    </a>
但是点击它我得到了一个404

[Route("help")]
public class HelpController : Controller
{
 [HttpGet("privacy-policy")]
 public async Task<IActionResult> PrivacyPolicy(string id)
 {
   // stuff
 }
}
[路由(“帮助”)]
公共类帮助控制器:控制器
{
[HttpGet(“隐私政策”)]
公共异步任务PrivacyPolicy(字符串id)
{
//东西
}
}

我做错了什么。

HttpGet()
中缺少使用
{id}
参数

您可以执行以下操作

[HttpGet("privacy-policy/{id}")]
public async Task<IActionResult> PrivacyPolicy(string id)
{
   // stuff
}
[HttpGet(“隐私策略/{id}”)]
公共异步任务PrivacyPolicy(字符串id)
{
//东西
}

非常确定您在路由中需要id:
[HttpGet(“隐私策略/{id}”)]
除了上面的注释:对于您当前的配置,以下请求应该适用于您,其中id是一个查询参数,而不是路由的一部分:
http://localhost:63110/help/privacy-政策?id=9b933739-15d0-4c60-a84e-29f596a179d4
yes,谢谢你的帮助
[HttpGet("privacy-policy/{id}")]
public async Task<IActionResult> PrivacyPolicy(string id)
{
   // stuff
}