一个控制器中的多个Get by Id方法

时间:2016-05-11 15:31:08

标签: c# asp.net-mvc

如何在mvc控制器中应用多个Get方法。我有两种方法可以通过id获取数据,有没有办法配置它?我正在使用.net核心

此处路线配置:

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

来自控制器的两种方法:

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

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

在角色中我通过以下网址访问:

function myFunc(id) {
    return $http.get('/api/mycontroller/' + id);
}

1 个答案:

答案 0 :(得分:2)

想象一下,你将你儿子的两个名字都保留为“ Scott ”并且你想给一个斯科特(因为你更喜欢他)。你称之为“ Scott来到这里 ”,会发生什么?你认为正确的斯科特只会来吗?

简而言之,您不能拥有两种具有相同路由模式的方法。

我建议你创建两个更具可读性的独特路由定义。

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

[HttpGet("test/{id}")]
public IEnumerable<Test> GeTestById(int id) {}