MVC REST API从返回的Dto中排除参数

时间:2017-02-14 14:29:52

标签: c# json serialization asp.net-web-api

我有以下(简化的)API控制器:

public async Task<IHttpActionResult> GetById(int Id)
{
    var res = await _service.GetById(Id);

    return Ok(res);
} 

_service.GetById(Id)返回returnDto

returnDto如下:

public class returnDto
{
    public int Id{get; set;}
    public string value{get;set;}
    public string extra{get;set;}
}

问题是我希望在控制器返回时Id排除returnDto,例如GetById

我知道我可以这样做:

[DataContract]
public class returnDto
{
    public int Id{get; set;}
    [DataMember]
    public string value{get;set;}
    [DataMember]
    public string extra{get;set;}
}

但这将从此类的所有实例中排除Id,而我只希望将其排除在此方法之外。

我也知道我可以制作新的Dto,但这对我来说似乎有点多余。

可以吗?

1 个答案:

答案 0 :(得分:3)

您可以返回匿名类型:

public async Task<IHttpActionResult> GetById(int Id)
{
    var res = await _service.GetById(Id);

    return Ok(new {value = res.value, extra = res.extra});
}