C# 一个控制器中有多个Get by Id方法
如何在mvc控制器中应用multiple-Get方法。我有两个按id获取数据的get方法,有没有办法配置它?我用的是.NETCore 此处为路线配置: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
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) {}