【问题标题】:OData null parameter on Post methodPost 方法上的 OData 空参数
【发布时间】:2018-11-07 02:05:29
【问题描述】:

我有一个简单的 ASP.NET WebApi ODataV4 控制器 -

public class FooController : ODataController
{
    [HttpPost]
    public string Post([FromBody] Foo fooObj)
    {
        ...
    }
}

Foo模型如下,在EDM模型中Foo被定义为EntityType -

public class
{
    [Key]
    string id {get ; set;}

    string name {get; set;}
}

我为这个模型生成了 ODataClient 并尝试发布一个新的 Foo 对象 -

FooContext container = new FooContext(..);
Foo newFoo = new Foo() 
{
      name = "Simple foo"
}
container.AddToFoos(newFoo );

当我这样做时,Post 方法中的“fooObj”为空。但是,当我将请求中的 'id' 属性设置为非空值(甚至是空字符串)时,它似乎工作正常 -

Foo newFoo = new Foo() 
{
      id = "",
      name = "Simple foo"
}

我在这里缺少什么指针?

【问题讨论】:

    标签: asp.net-web-api odata


    【解决方案1】:

    如果您查看您的 $metadata,关键属性“id”是不可为空的。在 OData 模型注册期间,您应该能够将其设置为可选。我遇到了类似的问题,但我使用的是 Microsoft.AspNetCore.OData v7.0.1。我不确定您使用的是什么版本的 OData,但我这样做的方式是在构建模型期间:

    builder.EntityType<Foo>().Property(p => p.Id).IsOptional();
    

    【讨论】:

      猜你喜欢
      • 2019-08-27
      • 1970-01-01
      • 2021-07-10
      • 1970-01-01
      • 1970-01-01
      • 2018-01-24
      • 2020-12-14
      • 1970-01-01
      • 2016-01-27
      相关资源
      最近更新 更多