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 输入字段。我可以自己忽略它,但我不喜欢在我的代码中使用这种必须记住不使用的东西。
一种选择是为输入创建一个单独的模型,但这意味着我必须维护两个类而不是一个。
是否有任何数据注释可以完全忽略此属性?
尝试使用:
[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)