问题实现子类方法

时间:2017-08-03 19:51:38

标签: .net ajax api odatacontroller

所以我遇到了一个问题...问题是我有一个基类,它具有所有GET / POST / PUT / DELETE的实现,它是一个Generic类,所以基本上我实体更新的通道通过那里然后我有一个实现该类的实体的类......

对于其中一个实体,我想在更新数据库之前实现额外的逻辑,所以我想我只是在子类上执行它然后在新的逻辑之后我调用基类方法并且应该执行技巧,所以我创建了一个重载方法

public virtual async Task<IHttpActionResult> Put([FromODataUri] TKey key)

我遇到的问题是,当我从客户端发出请求时,如果我没有实现这个新方法,它可以正常工作并调用基本clase方法并更新实体但是在我添加了这个之后,使用完全相同的ajax请求它返回400响应...任何人都可以帮我弄清楚发生了什么?非常感谢:)

1 个答案:

答案 0 :(得分:0)

以下是document

的摘录
  

1.4.3更新实体    。 。 。   服务可以另外支持PUT,但是应该知道客户端可能事先不知道的往返属性中的数据丢失的可能性,例如打开或添加的属性,或者元数据中未指定的属性。 支持PUT的服务必须将结构属性的所有值替换为请求正文中指定的值。 。 。

我保证OData无法解析您提供的路由,因为它正在寻找带有model作为参数的PUT,然后您也可以拥有密钥。因此,您会收到错误#400。

我甚至不知道,如果使用ODataRouteAttribute会有帮助