Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 一个控制器中有多个Get by Id方法_C#_Asp.net Mvc - Fatal编程技术网

C# 一个控制器中有多个Get by Id方法

C# 一个控制器中有多个Get by Id方法,c#,asp.net-mvc,C#,Asp.net Mvc,如何在mvc控制器中应用multiple-Get方法。我有两个按id获取数据的get方法,有没有办法配置它?我用的是.NETCore 此处为路线配置: app.UseMvc(routes => { routes.MapRoute( name: "default", template: "{controller=Home}/{action=Index}/{id?}"); }); 和控制器的两种方法: [HttpGet("{id}")] public

如何在mvc控制器中应用multiple-Get方法。我有两个按id获取数据的get方法,有没有办法配置它?我用的是.NETCore

此处为路线配置:

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);

想象一下,你把两个儿子的名字都记为“Scott”,你想给一个Scott一块糖(因为你更喜欢他)。你叫“斯科特过来”,会发生什么?你认为正确的斯科特只会来吗

简而言之,不能有两个具有相同路由模式的方法

我建议您创建两个更具可读性的唯一路由定义

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

[HttpGet("test/{id}")]
public IEnumerable<Test> GeTestById(int id) {}
[HttpGet(“test/{id}/answers”)]
公共IEnumerable GetAnswersByTestId(int-id){}
[HttpGet(“test/{id}”)]
公共IEnumerable GeTestById(int-id){}

您希望
/api/mycontroller/{id}
对这两个路由都有效吗?@Tim,如果可能的话是的:)mvc框架如何知道您期望的是哪一个?您希望您的服务器如何知道差异
/api/mycontroller/1
--您的服务器无法知道您的要求。@Shyju是否可以通过属性[Route]或[RoutePrefix]来确定?
[HttpGet("test/{id}/answers")]
public IEnumerable<Answer> GetAnswersByTestId(int id){}     

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