asp.net web api 是否有类似 [Bind(Exclude="Property")] 的东西?

Is there something like [Bind(Exclude="Property")] for asp.net web api?

我试图从网络 api 控制器中的 Post 操作中排除 属性,asp.net 是否有类似 [Bind(Exclude="Property")] 的内容网页 api?

这是我的模型:

public class ItemModel
{
    public int Id { get; set; }
    public string Name { get; set; }
    public string Description { get; set; }
}

我想在 Post 操作中排除 Id,因为它是自动生成的,但我需要在我的 Get 操作中 return 它。

我知道我可以有两个模型,一个用于我的 Post 操作,一个用于我的 Get 操作,但我试图只用一个模型来做到这一点。

我更喜欢映射模型,但这可以通过在 ShouldSerialize 方法中检查请求是否为 POST 来实现:

public class MyModel
{
    public string MyProperty1 { get; set; }
    public string MyProperty2 { get; set; }

    public bool ShouldSerializeMyProperty2()
    {
        var request = HttpContext.Current.Request;

        if (request.RequestType == "POST") return false;

        return true;
    }
}

其中您的方法名称是 属性 的名称,前缀为 ShouldSerialize。

请注意,这适用于 JSON。对于 XML,您需要将以下行添加到您的配置中:

config.Formatters.XmlFormatter.UseXmlSerializer = true; 

您可以简单地为 POST 创建一个 DTO。