WebApi POST不包含ID字段

时间:2013-10-15 07:09:14

标签: c# asp.net-web-api data-annotations

我仍然只需要几天的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; }

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

public HttpResponseMessage Post(MyModel model)

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

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

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

1 个答案:

答案 0 :(得分:2)

尝试:

[ScaffoldColumn(false)]

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

所以你用Exclude来装饰它以避免属性绑定:

[Exclude]
 public long ID { get; set; }

您也可以(在Post函数中)从state:

中删除该属性
  ModelState.Remove("Id"); // Key removal

    if (ModelState.IsValid)
       {

       }
    }