asp.net web api有[Bind(Exclude =“Property”)]之类的东西吗?

时间:2015-03-06 15:49:29

标签: asp.net-web-api model-binding

我正在尝试从web api控制器中的Post Action中排除一个属性,对于asp.net web api,是否有类似[Bind(Exclude="Property")]的内容?

这是我的模特:

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

我想在Post Action中排除Id,因为它是自动生成的,但我需要在Get Action中返回它。

我知道我可以有两个模型,一个用于我的Post动作,一个用于我的Get动作,但我只想用一个模型来做这个。

1 个答案:

答案 0 :(得分:0)

我赞成映射模型,但这可以通过检查请求是否是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;