要启用OData属性路由,请在
controller
或
action
应该修饰一个名为
ODataRoutingAttribute
.
更名为
ODataAttributeRoutingAttribute in 8.0.
自从你
正在使用
asp.net core
那么你的
controller action
应该
如下所示:
Model:
public class ProjectInfo
{
public int Id { get; set; }
public string ApiVersion { get; set; }
public string Name { get; set; }
public string PhoneNumber { get; set; }
}
Controller:
public class ProjectsController : ControllerBase
{
private ProjectInfo[] project= new ProjectInfo[]
{
new ProjectInfo
{
Id = 1,
ApiVersion = "v1.0",
Name = "Kiron",
PhoneNumber = "111-222-3333"
},
new ProjectInfo
{
Id = 2,
ApiVersion = "v1.0",
Name = "Farid",
PhoneNumber = "456-ABC-8888"
}
};
[EnableQuery]
[HttpGet("odata/Projects")]
public IActionResult Get()
{
return Ok(project);
}
[ODataAttributeRoutingAttribute]
[HttpGet("odata/Projects/{key}")]
public IActionResult Get(int key)
{
var project = project.FirstOrDefault(c => c.Id == key);
if (project == null)
{
return NotFound($"Cannot find project with Id={key}.");
}
return Ok(project);
}
}
Note:
你也可以设置
[ODataAttributeRoutingAttribute]
在全局控制器上,这样就不需要设置每个动作。在里面
那案子你就处理掉吧
[ApiController]
和
[Route("[controller]")]
Reference Required:
using Microsoft.AspNetCore.OData.Routing.Attributes;
Startup.cs:
services.AddControllers().AddOData(opt => opt.Select());
Output:
注:
当你使用
oData 8.0
你必须使用
ODataAttributeRoutingAttribute
在你的
控制器
或
行动
正如你可以看到上面的代码和截图。
它会解决你的问题。
此外,您还可以查看有关我们产品的更多详细信息
official blog document here
这里还有
sample project