如何在asp.net webapi中访问产品的ID

时间:2015-05-13 04:56:57

标签: asp.net-mvc asp.net-web-api

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的定义。

2 个答案:

答案 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);
    }