C# 在ASP.NETCore2中使用标记帮助程序生成漂亮的URL

C# 在ASP.NETCore2中使用标记帮助程序生成漂亮的URL,c#,asp.net-core,asp.net-core-2.0,asp.net-core-tag-helpers,C#,Asp.net Core,Asp.net Core 2.0,Asp.net Core Tag Helpers,如何使用标记帮助程序生成一个好的URL 例如: <a asp-controller="Article" asp-action="FilterByTag" asp-route-tagId="@tag.Id" title="@tag.Description"> <span class="badge badge-dark">@tag.Title</span> </a> @标签.标题 此代码生成一个

如何使用标记帮助程序生成一个好的URL

例如:

 <a asp-controller="Article" 
    asp-action="FilterByTag" 
    asp-route-tagId="@tag.Id" 
    title="@tag.Description">
         <span class="badge badge-dark">@tag.Title</span>
 </a>

@标签.标题
此代码生成一个URL,如
/Article/FilterByTag?tagId=2

但是我想要
/Article/FilterByTag/tagId=2
/Article/FilterByTag/2


如何使用标记帮助程序生成此URL?

在操作上使用属性路由,如
[Route(“Article/FilterByTag/{tagId}”)]

比如说

[Route("[controller]")]
public class ArticleController : Controller {

    //...other actions

    [HttpGet]
    [Route("FilterByTag/{tagId}")] // Matches GET Article/FilterByTag/2
    public IActionResult FilterByTag(int tagId) {
        //...

        return View();
    }    
}
这样,当从标记帮助器引用操作时,生成的链接将映射到操作的路由模板,并返回所需的格式,如
Article/FilterByTag/2

属性路由需要更多的输入来指定路由;传统的默认路由更简洁地处理路由。但是,属性路由允许(并且需要)精确控制应用于每个操作的路由模板


参考

在操作上使用属性路由[路由(“Article/FilterByTag/{tagId}”)]