Asp.net web api WebAPI OData v4-使用类表示操作';s参数

Asp.net web api WebAPI OData v4-使用类表示操作';s参数,asp.net-web-api,odata,odata-v4,Asp.net Web Api,Odata,Odata V4,我想向我的OData控制器添加一个操作。我将调用此操作,请求主体将匹配以下结构,并符合以下验证要求: 公共类发布模型 { [必需,EnumDataType(typeof(JobEventType))] PublicJobEventType类型{get;set;} [所需长度(100)] 公共字符串ExternalRef{get;set;} 公共DateTimeOffset?日期时间{get;set;} } 使用普通的ApiController,我通常会让我的控制器方法简单地接受这种类型的参数,

我想向我的OData控制器添加一个操作。我将调用此操作,请求主体将匹配以下结构,并符合以下验证要求:

公共类发布模型
{
[必需,EnumDataType(typeof(JobEventType))]
PublicJobEventType类型{get;set;}
[所需长度(100)]
公共字符串ExternalRef{get;set;}
公共DateTimeOffset?日期时间{get;set;}
}
使用普通的ApiController,我通常会让我的控制器方法简单地接受这种类型的参数,它就会工作。对于OData,我似乎必须使用ODataActionParameters参数来实现我的方法

我不知道该如何告诉OData请求的主体应该与上面的内容匹配。我得到的最接近的方法是让它在参数中预期:

var pa=mb.EntityType().Collection.Action(“发布”);
pa.ReturnsFromEntitySet(“作业事件”);
pa.参数(“evt”);
但这需要我发送

{“evt”:{“type”:“…”,“externalRef”:“…”,“dateTime”:“…}
当我想要发送的只是

{“type”:“…”,“externalRef”:“…”,“dateTime”:“…”}

我知道我可以将类的属性指定为单独的参数,但这将更难维护,并且我将丢失数据注释验证。有办法处理吗?

这方面有什么更新吗?恐怕不是我的。最后,我创建了一个带有数据注释的类实例,在中复制了参数,并手动进行了验证。混乱。顺便说一句,我认为你的第一个片段是正确的。因为Odataparameters对象期望序列化对象是值,而“vet”是键。对吗?