我有此动作方法可用于OData:
[HttpPost]
[ODataRoute("({id})/Replace")]
public Blog Replace([FromODataUri] int id, Blog blog)
此响应/odata/Blogs(1)/Replace
上的POST请求。它起作用,除了blog
参数从POST从未绑定的那部分之外,也就是说,它不是null,但是具有所有属性的默认值。如果将[FromBody]
添加到该参数,它将变为null。我也尝试使用ODataActionParameters
类型的参数,但是它始终为null。这是我模型的相关部分:
var replace = builder.EntitySet<Blog>("Blogs").EntityType.Action("Replace");
//replace.Parameter<int>("id").Required(); //this can be added or not, it doesn't matter
replace.EntityParameter<Blog>("blog").Required();
replace.Returns<int>();
我读到某个地方,一个OData动作不能有两个参数,但是我不确定。我需要提供id
参数,因此需要为此找到解决方案。我正在使用ASP.NET Core 3.1和所有软件包的最新版本。我在做什么错?
解决方案很简单:
我正在为“博客”实体发布JSON,但是我必须对其进行修改,以便包含在参数“博客”中,如下所示:
{ “博客”: { “ BlogId”:1 <> }}
这解决了我的问题。