2017-08-16 93 views
-1

我有设置默认路由的MVC核心站点:问题与MVC核心路由

public void Configure(IApplicationBuilder app) 
{ 
    app.UseMvcWithDefaultRoute(); 
} 

它创建规则{控制器=首页}/{行动=指数}/{ID}?

我有一个链接是使用标签帮助器生成的。

<a asp-controller="Help" asp-action="privacy-policy" asp-route-id="@Model.id" target="_blank"> 
     privacy policy 
    </a> 

这会产生以下链接:

http://localhost:63110/help/privacy-policy/9b933739-15d0-4c60-a84e-29f596a179d4 

但点击它,我得到一个404

[Route("help")] 
public class HelpController : Controller 
{ 
[HttpGet("privacy-policy")] 
public async Task<IActionResult> PrivacyPolicy(string id) 
{ 
    // stuff 
} 
} 

我做了什么错。

+2

敢肯定你需要的ID在路线:'[HTTPGET(“隐私政策/(编号)”)]' – Andrei

+0

除了以上评论:与当前的配置,下面的请求应为你工作,其中id是查询参数,不是路由的一部分: 'http:// localhost:63110/help/privacy-policy?id = 9b933739-15d0-4c60-a84e-29f596a179d4' – Set

+0

是的,感谢您的帮助 – DavidB

回答

1

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

您可以按照以下方式实施您的操作。

[HttpGet("privacy-policy/{id}")] 
public async Task<IActionResult> PrivacyPolicy(string id) 
{ 
    // stuff 
}