2017-06-15 70 views
3

我很好奇asp-route- *標籤助手是如何工作的。我所理解的是,它對我設置的路由有一定的約束。例如。ASP.NET核心路由標籤助手使用路由?

routes.MapRoute(
    name: null, 
    template: "{category}/Page{page:int}", 
    defaults: new { controller = "Product", action = "List" } 
); 

在這裏,我映射我的路線如下:/分類/的PageNumber在控制器「產品」

行動「清單」將下面的代碼,點擊後按照前面的圖路線

<a class="btn btn-block 
    @(cat == ViewBag.SelectedCategory ? "btn-primary" : "btn-default")" 
    asp-controller="Product" 
    asp-action="List" 
    asp-route-category="@cat" 
    asp-route-page="1">@cat</a> 

因此,我的理解是,「asp-route-category」將在我的routeMap模板中搜索「{category}」,然後「asp-route-page」將在routeMap模板中搜索「{page}」 ?

關於MS的文檔有點令人困惑或只是爲了抽象,有人能以更好的方式證實或解釋這一點嗎?

回答

3

當使用conventional routing時,與您一樣,controlleraction參數是必需的,並映射到您的控制器和操作名稱。

所以,如果你想路由到行動List在控制器Product與 類別和頁面參數,你的路由應該是這樣的:

routes.MapRoute(
    name: null, 
    template: "{controller}/{action}/{category}/Page{page:int}", 
    defaults: new { controller = "Product", action = "List" } 
); 

更新:

的您正在使用的Tag Helpers中的asp-route屬性將爲路由值提供參數。

因此,基本上,asp-route-MyParameter將添加MyParameter來路由具有指定值的值。

More Information here

+0

這部分很清楚,我對「asp-route-x」部分更加困惑。 「x」可以是任何東西,對吧?但它必須與你的地圖路線中的某些東西相匹配? – TanguyB

+0

查看已更新的答案 –