2016-10-06 10 views
0

コントローラのルート属性を使用できますか?属性にはASP.NETコアの定数文字列だけでなく、パラメータもありますか? ex。私はあなたがこれに類似した方法でRoutePrefixを使用して、必要に応じて各メソッドにRoute秒を追加することができますパラメータを持つコントローラのルートを追加することはできますか?

[Route("api/sth/{Id}/sth2/latest/sth3")] 
public class MyController : Controller 
{ 
    public object Get() 
    { 
     return new object(); 
    } 
} 

答えて

1

を、しかし、あなたも予定がない場合には、トリッキーになりがち:

たとえば、あなたがこれを行うことができます。

のは、あなたのowin Startupクラスがapp.UseMvc()

でWEBAPIルートをデフォルトに設定されている以下のこのコードは正常に動作して値{id}

curl http://localhost:5000/api/values/135/foo/bar/

[Route("api/values/{id}/foo/bar")] 
public partial class ValuesController : Controller 
{ 
    [HttpGet] 
    public IEnumerable<string> Get() 
    { 
     return new string[] { "value1", "value2" }; 
    } 
} 

の独立した["value1", "value2"]この作品を返すと仮定しますこの場合は経路パラメータの指定値を返す135

curl http://localhost:5000/api/values/135/foo/bar/

​​3210

しかしあなたが同じコントローラのもの2つのアクションを組み合わせた場合、あなたの要求に応えることができます2つの方法があるので、それは500を返します。

1

下記の定義コントローラに追加します。ルート接頭辞で定義されたパラメータは、メソッドのルートに指定されたのと同じ方法で引き続きメソッドに渡されます。あなたができることを確認するために

[RoutePrefix("api/sth/{id}/sth2/latest/sth3")] 
public class MyController : ApiController 
{ 
    /// <example>http://www.example.com/api/sth/12345/sth2/latest/sth3</example> 
    [Route()] // default route, int id is populated by the {id} argument 
    public object Get(int id) 
    { 
    } 

    /// <example>http://www.example.com/api/sth/12345/sth2/latest/sth3/summary</example> 
    [HttpGet()] 
    [Route("summary")] 
    public object GetSummary(int id) 
    { 
    } 

    /// <example>http://www.example.com/api/sth/12345/sth2/latest/sth3/98765</example> 
    [HttpGet()] 
    [Route("{linkWith}")] 
    public object LinkWith(int id, int linkWith) 
    { 
    } 
} 
+0

ASP.NET CoreではRoutePrefixも使用できますか? –

+0

私は.NET Coreを使用していないので、申し訳ありません。 .NET Coreを使用している場合は、質問に追加します。 –

関連する問題