using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Web.Http;
using System.Web.Mvc;
using OnlineStoreApi.Models;
namespace OnlineStoreApi.Controllers
{
public class ProductController : ApiController
{
/*private readonly mystoreEntities1 _myObj = new mystoreEntities1();*/
#region Variables
DataClasses1DataContext _context = new DataClasses1DataContext();
ProductModel products;
#endregion
public IEnumerable<ProductModel> GetALLProducts()
{
var prods = from item in _context.spGetProducts().ToList()
select new ProductModel
{
Id = item.id,
ProductTypeId = item.ProductTypeId,
VendorId = item.VendorId,
OldPrice = item.OldPrice,
Price = item.Price,
ProductCost = item.ProductCost,
PictureId=item.PictureId,
PictureBinary=item.PictureBinary.ToArray(),
MimeType=item.MimeType
};
return prods;
}
public IHttpActionResult GetProduct(int id)
{
products = new ProductModel();
var product = products.FirstOrDefault((p) => p.Id == id);
if (product == null)
{
return NotFound();
}
return Ok(product);
}
}
}
大家好,webapi的另一个问题。我无法使用id显示产品的详细信息。每当我输入/ api / Product / 1时,都会显示所有产品。但是应显示ID为1的产品。我不明白该怎么做。另一个问题是FirstOrDefault方法发生错误。我不知道为什么它说ProductModel不包含关于FirstOrDefault的定义。
答案 0 :(得分:3)
您在.FirstOrDefault()
的实例上调用ProductModel
但未实现IEnumerable<T>
。而是在返回集合的方法上调用它
public IHttpActionResult GetProduct(int id)
{
products = new GetALLProducts();
var product = products.FirstOrDefault(p => p.Id == id);
....
答案 1 :(得分:0)
您应该创建服务。不要忘记 SOLID。
[HttpGet("{id}")]
public ActionResult GetPostById (int id)
{
var result = _postService.GetById(id);
if (result == null)
{
return NotFound();
}
return Ok(result);
}