2017-05-29 76 views
1

我处于需要将单个对象与字符串一起返回的情况..我对web api非常陌生,无法找出如何解决返回多个参数..从web api控制器方法返回单个对象和字符串

下面

是我迄今为止尝试过的代码..

public async Task<IHttpActionResult> PostAuthenticationData(long id, string password) 
    { 
     Consumer consumer = await db.Consumers.FindAsync(id); 

     if (consumer == null) 
     { 
      return NotFound(); 
     } 

     if(consumer.ConsumerPassword != password) 
     { 
      return BadRequest(); 
     } 

     ConsumerSessionTokenLog consumerSessionTokenLog = await db.ConsumerSessionTokenLogs.FindAsync(id); 

     if(consumerSessionTokenLog == null) 
     { 
      return NotFound(); 
     } 
     else 
     { 
      string sessionToken = consumerSessionTokenLog.SessionToken; 
     } 

    /// here i need to return "sessionToken" and "consumer" object 
     return Ok(consumer); 
    } 

可以在任何一个,请在此查询帮助..

提前感谢

回答

3

创建它包装都值一类,或者你可以返回,像这样一个匿名类型:

return Ok(new { consumer, sessionToken }); 

请注意,你需要吊sessionToken你的if语句范围。

+0

感谢抢劫的帮助:) –

2

过不去定义结构返回:

struct MyReturType 
{ 
    object obj; 
    string str; 

    public MyReturType(object o, string s) 
    { 
     obj = o; 
     str = s; 
    } 
} 

然后返回:

public async Task<IHttpActionResult> PostAuthenticationData(long id, string password) 
    { 
     Consumer consumer = await db.Consumers.FindAsync(id); 

     if (consumer == null) 
     { 
      return NotFound(); 
     } 

     if(consumer.ConsumerPassword != password) 
     { 
      return BadRequest(); 
     } 

     ConsumerSessionTokenLog consumerSessionTokenLog = await db.ConsumerSessionTokenLogs.FindAsync(id); 

     if(consumerSessionTokenLog == null) 
     { 
      return NotFound(); 
     } 
     else 
     { 
      string sessionToken = consumerSessionTokenLog.SessionToken; 
     } 

    /// here i need to return "sessionToken" and "consumer" object 
     return Ok(new MyReturType(consumer,sessionToken)); 
    } 
相关问题