WebApi POST 不包含 ID 字段

Pij*_*usn 5 c# data-annotations asp.net-web-api

我对 ASP.NET 和 WebAPI 框架的了解还只有几天,所以我一定错过了一些非常简单的东西。

我有一个模型,它有几个属性和 ID(作为一个属性,它有一个私有的 setter 但没有帮助)。

public long ID { get; private set; }

[Required(ErrorMessage = "Location coordinate X is required.")]
public double X { get; set; }

[Required(ErrorMessage = "Location coordinate Y is required.")]
public double Y { get; set; }
Run Code Online (Sandbox Code Playgroud)

然后我有一个控制器方法帖子:

public HttpResponseMessage Post(MyModel model)
Run Code Online (Sandbox Code Playgroud)

当我启动项目并转到自动生成的 API 文档时,我可以看到示例包含 ID 作为输入字段。我希望 API 忽略 ID 输入字段。我可以自己忽略它,但我不喜欢在我的代码中使用这种必须记住不使用的东西。

一种选择是为输入创建一个单独的模型,但这意味着我必须维护两个类而不是一个。

是否有任何数据注释可以完全忽略此属性?

Car*_*ras 3

尝试使用:

[ScaffoldColumn(false)]
Run Code Online (Sandbox Code Playgroud)

html 帮助程序将不再看到 ID 属性。但是,如果模型绑定器在请求中看到匹配的值,则它可能仍会尝试将值移动到 ID 属性中。

因此,您可以使用 Exclude 来装饰它,以避免绑定属性:

[Exclude]
 public long ID { get; set; }
Run Code Online (Sandbox Code Playgroud)

您还可以(在 Post 函数内)从状态中删除该属性:

  ModelState.Remove("Id"); // Key removal

    if (ModelState.IsValid)
       {

       }
    }
Run Code Online (Sandbox Code Playgroud)