В недавней публикации есть некоторые предложения о том, как добавить пользовательскую функцию в AbpODataEntityController
.Я пытался, но не могу достичь того, что хочу.
Например, в моем AbpODataEntityController
есть два метода, называемые Test
и EchoTest
.
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/$metadata#Edm.String","value":"inanc"}
Но функция с параметром с именем param
неЯ получаю ошибку 404.
Я вызываю метод по http://localhost:21021/odata/towns/EchoTest?param=foo.
Где я ошибся? У меня должна быть какая-то пользовательская функция, принимающая параметры.
Спасибовы.