2016-05-11 16 views
-3

mvcコントローラで複数のGetメソッドを適用する方法。私はIDでデータを取得する方法を2つ取得しました、それを設定する方法はありますか?Multiple複数のGetメソッドを1つのコントローラで使用する

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

そして、コントローラから2つの方法:

[HttpGet("{id}")] 
public IEnumerable<Answer> GetAnswersByTestId(int id) 
    => _userQuizRepository.GetTestByAnswerId(id); 

[HttpGet("{id}")] 
public IEnumerable<Test> GeTestById(int id) => _userQuizRepository.GetTestById(id); 

と角度で、私は次のURLでアクセスを取得:

function myFunc(id) { 
    return $http.get('/api/mycontroller/' + id); 
} 
を私はルート設定にここで.NETコア

を使用しています

+1

'/ api/mycontroller/{id}'は両方のルートで動作すると期待していましたか? – Tom

+0

@Tim、もしそれがオフコース可能ならば、 – Vitaliy

+0

:) mvcフレームワークはどのようにあなたが期待しているかを知っているはずですか? – Shyju

答えて

2

あなたの息子の名前を "Scott"とすると、あなたは彼がもっと好きなのでのキャンディを1つのスコットに与えたいと思っています。)。あなたは "スコットはここに来る"と呼んで、何が起こるでしょうか?正しいスコットは来ると思う?

要するに、同じルートパターンで2つの方法を使用することはできません。

2つの固有のルート定義を作成して読みやすくすることをお勧めします。

[HttpGet("test/{id}/answers")] 
public IEnumerable<Answer> GetAnswersByTestId(int id){}  

[HttpGet("test/{id}")] 
public IEnumerable<Test> GeTestById(int id) {} 
関連する問題