首页 > 解决方案 > ODataQueryOptions 不响应我的自定义类的属性

问题描述

我有这样的实体

public class MyDto
{
    public string string1;
    public string string2;
    public MyCustomClass myCustomClass;
}

我有两个控制器,其中一个完全符合 Odata 的规范,包含所有 CRUD,它们都运行良好。

另一个使用不同的路线来执行类似的 CRUD,如下所示:


[Route('newWay')] //did not use ODateRoutePrefix here
public class SecondController: ODataController
{
    [HttpPost]
    [Route('create')]
    public async Task<IActionResult> Create(...);

    [HttpPatch]
    [Route('update')]
    public async Task<IActionResult> Update(...);

/* Here's the problem */
    [HttpGet]
    [Route('get')]
    [EnableQuery]
    public async Task<IQuerable<MyDto>> Get(ODataQueryOptions<MyDto> option);
/* Here's the problem */
}

当这样的帖子时newWay/get?$select=myCustomClass,它会显示一个像这样的空 Dto

[]

当这样的帖子时newWay/get?$select=myCustomClass,string1,它只显示这样的string1

[
    "string1": "balabala"
]

但是当我在没有选择属性的情况下发布时,它可以正确返回所有内容

那么我的第二个控制器会发生什么?

标签: asp.netjsoncontrollerodata

解决方案


推荐阅读