.net 实现子类方法的问题
所以我有点问题。。。问题是,我有一个基类,它实现了所有GET/POST/PUT/DELETE,它是一个泛型类,所以基本上,我更新的任何实体都会通过它,然后我有一个实现该类的实体类.net 实现子类方法的问题,.net,ajax,api,odata,odatacontroller,.net,Ajax,Api,Odata,Odatacontroller,所以我有点问题。。。问题是,我有一个基类,它实现了所有GET/POST/PUT/DELETE,它是一个泛型类,所以基本上,我更新的任何实体都会通过它,然后我有一个实现该类的实体类 public virtual async Task<IHttpActionResult> Put([FromODataUri] TKey key) public虚拟异步任务Put([FromODataUri]TKey) 问题是,对于其中一个实体,我想在更新数据库之前实现额外的逻辑,所以我认为我只需要在子
public virtual async Task<IHttpActionResult> Put([FromODataUri] TKey key)
public虚拟异步任务Put([FromODataUri]TKey)
问题是,对于其中一个实体,我想在更新数据库之前实现额外的逻辑,所以我认为我只需要在子类上实现它,然后在新的逻辑之后,我调用基类方法,这应该可以实现,所以我创建了一个重载方法
public override Task<IHttpActionResult> Put(int key){
//NEW LOGIC
return base.Put(key);
}
公共覆盖任务Put(int键){
//新逻辑
返回基。放置(键);
}
我遇到的问题是,当我从客户机发出请求时,如果我没有实现这个新方法,它可以正常工作,并调用base-clase方法,实体被更新,但在我添加了这个之后,使用完全相同的ajax请求,它会返回400个响应。。。有人能帮我弄清楚发生了什么事吗?非常感谢:)这是从
1.4.3更新实体
. . .
服务还可以支持PUT,但应注意客户端可能事先不知道的往返属性(如打开或添加的属性,或元数据中未指定的属性)中的数据丢失可能性支持PUT的服务必须用请求正文中指定的值替换结构属性的所有值
我向您保证,OData无法解析您提供的路由,因为它正在以模型为参数查找PUT
,然后,您还可以使用密钥。因此,您会得到错误#400
我甚至不知道使用ODataRouteAttribute是否有帮助
1.4.3更新实体
. . .
服务还可以支持PUT,但应注意客户端可能事先不知道的往返属性(如打开或添加的属性,或元数据中未指定的属性)中的数据丢失可能性支持PUT的服务必须用请求正文中指定的值替换结构属性的所有值
我向您保证,OData无法解析您提供的路由,因为它正在以模型为参数查找PUT
,然后,您还可以使用密钥。因此,您会得到错误#400
我不知道,即使使用ODataRouteAttribute
是否会有帮助,我认为这本质上是错误的,不符合Odataprotocol<代码>放置
必须将模型作为参数。或者三角洲。不能将简单的基元类型放入。因此,覆盖方法隐藏了基本方法,但Odata route builder找不到它。因此,我认为这本质上是错误的,不符合Odataprotocol<代码>放置必须将模型作为参数。或者三角洲。不能将简单的基元类型放入。因此,覆盖方法隐藏了基本方法,但Odata route builder找不到它。因此400