7

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

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

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 输入字段。我可以自己忽略它,但我不喜欢在我的代码中使用这种必须记住不要使用的东西。

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

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

4

1 回答 1

3

尝试:

[ScaffoldColumn(false)]

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

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

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

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

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

    if (ModelState.IsValid)
       {

       }
    }
于 2013-10-15T07:12:01.583 回答