我希望从我的ASP.NET Web API获得响应,该API使用对象类型Product
进行响应。
然而,当我试图通过Postman获得回复时,它始终会返回
500内部服务器错误。
以下是我的代码,提前感谢您提供的任何帮助:
[ResponseType(typeof(Product))]
[Route("webapi/products/{productname}")]
public async Task<IHttpActionResult> GetProduct(string productname)
{
var product = (Product)db.Products.Where(t => t.name.Contains(productname));
//^^^^^^this seems to be the problem^^^^^^^//
if (product == null)
{
return NotFound();
}
return Ok(product);
}
答案 0 :(得分:1)
返回IQueryable<Product>
(这意味着可能有多个)并且无法转换为Product。
如果你只想要一个,那么你可以从结果中取得第一个:
var product = (Product)db.Products.Where(t => t.name.Contains(productname)).FirstOrDefault();
这可以简化为:
var product = db.Products.FirstOrDefault(t => t.name.Contains(productname));
这将首先为您提供马赫条件的产品,如果没有,则为null。
编辑:正如评论中所提到的,此处不需要演员表,但是我在第一个例子中将其保留为与原始问题相关联。谢谢,Nico。
答案 1 :(得分:0)
如果返回IEnumerable,则无法将其强制转换为Product。如果你只想要第一个匹配的值,你最后可以调用FirstOrDefault:
let secondVC = tempNavVC.viewControllers[1] as! TableViewController2