2016-08-17 22 views
0

MVCアプリケーションで作業していて、Url.Link関数を使用して作業URLを構築しようとしています。それは、IDという名前のパラメータを受け入れる - (関数の名前は管理されRouteConfig.csurl.link error:ルートコレクションで「Default」という名前のルートが見つかりませんでした。パラメータ名:名前

routes.MapRoute(
      name: "Default", 
      url: "{controller}/{action}/{id}", 
      defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional } 
     ); 

私はコントローラに到達しようとしているルートで

は、ここではいくつかの関連するコードですそれはタイプのGUIDは次のとおりです。Url.Link()

[HttpGet] 
[Route("manage/{id:guid}")] 

コール:

Url.Link("Default", new { Controller = "Users", Action = "Manage", id = aggregateId }); 

私は、次のような属性を命名しようとしている:

[HttpGet] 
[Route("manage/{id:guid}", Name="ManageUserRoute")] 

は、このようなUrl.Link()を呼び出す:

url = Url.Link("ManageUserRoute", new { id = aggregateId }); 

私は両方の方法を使用してタイトルに同じエラーを取得します。これを修正するにはどうすればよいですか?

+0

はのActionResultが '' UsersController'に、あなたは 'Url.Link( "デフォルト" のような規則ベースのルーティングを経由してリンクを構築(GUID ID)を管理する'で欲しいです、新しい{controller = "Users"、アクション= "Manage"、id = aggregateId}); '。 * 'controller'と' action' *の共通名に注意してください。あなたの例では、属性ルーティングとコンベンションベースルーティングの両方を混在させています。 – Nkosi

答えて

2

あなたの例では、属性ルーティングと従来型ルーティングの両方が混在しています。アクションを想定し

UsersControllerActionResult Manage(Guid id)である、あなたは

Url.Link("Default", new { controller = "Users", action = "Manage", id = aggregateId }); 

共通/小文字の使用controlleraction「ルート値」のための名などの規則ベースのルーティングを経由してリンクを作成しますURLを作成する

更新

調査したところ、これはMVCではなくWeb API用であることに言及しなかったことにも気付きました。 MVCバージョンUrlHelperには、Linkメソッドがないというヒントがありました。

のWeb APIのデフォルトの規則ベースのルートは、それがHTTPのルートテーブルにDefaultルートの名前を見つけることができない理由であるDefaultAPiないDefault

// Convention-based routing. 
config.Routes.MapHttpRoute(
    name: "DefaultApi", 
    routeTemplate: "api/{controller}/{id}", 
    defaults: new { id = RouteParameter.Optional } 
); 

あるので、あなたがそのエラーを取得している可能性が高いので、より多くのルートマッピング。 WebApiConfig.csファイルで、Web APIのルートを確認する必要があります。

だから、あなたはおそらくアクションを想定し

Url.Link("DefaultApi", new { controller = "Users", action = "Manage", id = aggregateId }); 
+0

私はそれがコードブロック#3ですでに試したことだと確信していますか? – Tommy

+0

しかし、ルート値は大文字と小文字を区別しませんか?彼はまた、コードスニペットの直前で私の前提として行動を示していませんでした。 – Nkosi

+0

ああ、あなたが正しいかもしれない、私はあなたが今何を意味するかを見ます。小文字のCとAの経路をもう少し明瞭に示す答えを更新できますか? – Tommy

関連する問題