WebApi POST不包含ID字段
我仍然只需要几天的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; }
然后我有一个控制器方法post:
public HttpResponseMessage Post(MyModel model)
当我启动项目并转到自动生成的API文档时,我可以看到样本包含ID作为输入字段。 我希望API忽略ID输入字段。 我可以自己忽略它,但我不喜欢我的代码中那些必须记住 – 不要使用的东西。
一种选择是为输入创建一个单独的模型,但这意味着我必须维护两个类而不是一个。
是否有任何数据注释完全忽略此属性?
试试:
[ScaffoldColumn(false)]
html帮助程序将不再看到ID属性。 但是,如果模型绑定器在请求中看到匹配的值,它仍可能会尝试将值移动到ID属性中。
所以你用Exclude来装饰它以避免属性被绑定:
[Exclude] public long ID { get; set; }
您也可以(在Post函数中)从状态中删除属性:
ModelState.Remove("Id"); // Key removal if (ModelState.IsValid) { } }
- ASP.NET Web API 2具有Task.Run性能的异步操作方法
- 使用ASP.NET Web API并排进行基本和表单身份validation
- 使用自定义DataAnnotationsModelValidatorProvider进行服务器端validation
- HttpClient调用Windows-Authenication ApiController方法…但没有WindowsIdentity出现
- 为什么只有在我打开Fiddler时才能在ASP.NET中调用API?
- 在Entity Framework中的运行时期间更改数据库,而不更改Connection
- 使用带有备用内容类型的c#web api
- 如何解密Web API 2 JWT令牌?
- Unity:当前类型是一个接口,无法构造