2017-01-30 12 views
2

内のURLパラメータルーティング作業を取得する方法:私のASP.NETコアのデフォルトのルーティングがあることをVS2015でデフォルト設定されてASP.NETコア

routes.MapRoute(
    name: "default", 
    template: "{controller=Home}/{action=Index}/{id?}"); 

私が作る私の要求のURL /私のコントローラ/私は属性がルーティングと同じものにしようとしている私の特殊値

public IActionResult my-controller(string id) {... 

に等しいidパラメータを次のように私の特殊ビューは、それは確かに定義されている私の私のコントロールのメソッドを呼び出します。次のように私は、属性を定義します。

[Route("my-controller/{id}")] 
public IActionResult my-controller(string id) {... 

次のように私はエラーを取得する:

InvalidOperationException: The constraint entry 'attributeOfInterest' - 'string' on the route 'CacheTagHelper/{attributeOfInterest:string}' could not be resolved by the constraint resolver of type 'DefaultInlineConstraintResolver'. 

私はattritubeルーティングを経験していないことだし、コントローラのメソッドに上記は与えていない理由を理解していません私は同じ結果です。

答えて

1

デフォルトのルーティングテンプレートは{controller=Home}/{action=Index}/{id?} あるので、あなたは、特定の属性であればmy-controllerは、あなたのアクションメソッドを持つcontrollerクラスとIActionResult試合からあなたの継承されたクラスになり、あなたのコントローラのアクションに

をテンプレートに従うことができますあなたのケースでは、ルートへのごプット{Id}、あなたのメソッドのパラメータにも、特定の{Id}は、ルーティングでは、あなたはまた、特定のHTTP動詞のアクションを必要とすべきである(などPUT、POSTをGET)

になります
public class my-controller : Controller 
{ 
    [HttpGet("{id}")] 
    public IActionResult my-special-view(String id) { ... } 
} 
+0

"FromRoute"であなたの他の答えはどうですか?具体的には、ルート属性を使用しているので、スタートアップクラスではなくコントローラでテンプレートを作成できます。 –

+0

[HttpGet( "{id}")]を使用すると実際に問題が発生しました。私にとっては、[HttpGet]だけでうまくいきました。ここをクリックしてください:https://docs.microsoft.com/en-us/aspnet/core/mvc/controllers/routing#setting-up-routing-middleware – Blaze

関連する問題