2017-06-15 4 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> 
以前maprouteに従ってください

「asp-route-category」は、私のrouteMapテンプレート内の「{category}」を検索してから、「asp-route-page」は、routeMapテンプレートの「{page}」を検索します?

MSのドキュメントは混乱しているだけで抽象的であるため、誰かがこれをより良い方法で確認または説明することはできますか?

答えて

3

conventional routingを使用する場合は、controllerとのパラメータが必要です。コントローラーとアクション名にマッピングします。あなたは カテゴリーやページのパラメータを持つコントローラProductでアクションListにルーティングする場合は

だから、あなたのルーティングは次のようにする必要があります:

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

更新:

Tag Helpersasp-route属性は、値をルーティングするためのパラメータを提供します。

したがって、基本的には、asp-route-MyParameterは、MyParameterを指定値のルーティング値に追加します。

More Information here

+0

その部分は非常に明確で、私は "asp-route-x"の部分についてもっと混乱しています。 "x"は何でもいいですよね?しかし、それはあなたのマップルートの何かに一致する必要がありますか? – TanguyB

+0

更新された回答を表示 –

関連する問題