如何向AbpODataEntityController添加自定义函数?

问题描述 投票:0回答:1

在最近的post中,有一些关于如何向AbpODataEntityController添加自定义函数的建议。我试过但我无法达到我想要的效果。

例如,在我的AbpODataEntityController中,有两种方法叫做TestEchoTest

public class TownsController : AbpODataEntityController<Town>, ITransientDependency
{
    public TownsController(IRepository<Town> repository) : base(repository)
    {
    }

    // [HttpPost]
    public string Test()
    {
        return "inanc";
    }

    // [HttpPost]
    // [HttpGet]
    public IActionResult EchoTest([FromODataUri] string param)
    {
        return Ok(string.Format("The param was {0}", param));
    }
}

我的Startup.cs有:

builder.EntityType<Town>().Collection
    .Function("Test")
    .Returns<string>();
    //.Parameter<string>("param");

builder.EntityType<Town>()//.Action("stringTest")
    .Function("EchoTest")
    .Returns<IActionResult>()
    .Parameter<string>("param");

简单的功能Test是好的。它给出了一个结果:

{ “@ odata.context”: “http://localhost:21021/odata/ $#元Edm.String”, “值”: “inanc”}

但是带有名称为param的参数的函数不起作用。我收到404错误。

我用http://localhost:21021/odata/towns/EchoTest?param=foo称之为方法。

我哪里做错了?我应该有一些接受参数的自定义函数。

谢谢。

c# asp.net-core odata aspnetboilerplate
1个回答
0
投票

你缺少.Collection

builder.EntityType<Town>().Collection
    .Function("EchoTest")
    .Returns<IActionResult>()
    .Parameter<string>("param");

正确的网址:http://localhost:21021/odata/Towns/Default.EchoTest(param='foo')

© www.soinside.com 2019 - 2024. All rights reserved.