2014-03-06 56 views
1

我需要從Web Api控制器返回一些標準GET操作中不存在的特定數據。假設標準控制器的行爲是:EF 6和Web Api。如何在GET上返回自定義數據?

// GET api/xTourist/5 
     [ResponseType(typeof(xTourist))] 
     public IHttpActionResult GetxTourist(int id) 
     { 
      xTourist xtourist = db.xTourist.Find(id); 
      if (xtourist == null) 
      { 
       return NotFound(); 
      } 

      return Ok(xtourist); 

但是我需要返回一些更多的數據,比如酒店名稱。酒店名稱我使用功能:

public string FindHotelName (int id) 
     { 
      int? hotelid = db.xTourist.Find(id).КодИ; 
      string hotelname = db.xAdres.Find(hotelid).NameC; 
      return hotelname; 
     } 

但我應該怎麼joind這些數據,並在控制器的答案一併交回這一切?

回答

1

所以你只是想返回2個結果?爲什麼不創建一個新的對象來保存你需要的兩個值?

public class TouristReturnDTO 
{ 
    public xTourist Tourist { get; set; } 
    public string HotelName { get; set; } 
} 

public IHttpActionResult GetxTourist(int id) 
{ 
    xTourist xtourist = db.xTourist.Find(id); 
    if (xtourist == null) 
    { 
     return NotFound(); 
    } 
    string hotelName = FindHotelName(id) 
    return Ok(new TouristReturnDto 
     { 
      Tourist = xtourist, 
      HotelName = hotelName 
     } 
    ); 
} 

甚至不需要創建TouristReturnDTO,可以只使用一個匿名類型,如果你想:

return Ok(new 
     { 
      Tourist = xtourist, 
      HotelName = hotelName 
     } 
    ); 
+0

看起來它是我所需要的。非常感謝! –

相關問題