iT邦幫忙

第 12 屆 iThome 鐵人賽

DAY 25
0
Modern Web

ASP.NET Core 入門實戰30天系列 第 25

Day 25 使用ASP .NET Core 手把手打造一個購物網站 - Create & Read

  • 分享至 

  • xImage
  •  

前言

今天接續著前面
繼續針對create & Detail去做調整


stap by stap

Create

首先先來看一下初始專案如何create的一個新的poeduct
Scaffold出來的專案是使用async
傳入了一個product物件,並透過Bind去綁定相關的欄位
action裡面是直接使用DBcontext去做更新

首先先新增一個AddProduct在IProductRepository.cs
並在ProductRepository裡面去實作

    public void AddProduct(Product product);

ProductRepository.cs

    public void AddProduct(Product product)
        {
            _context.Add(product);
            _context.SaveChangesAsync();
        }

回到controller,將httpost的action調整如下
另外要注意如果欄位有異動,bind裡面也必須要同步調整

    [HttpPost]
        [ValidateAntiForgeryToken]
        public ActionResult Create([Bind("Id,ProductName,Price,Quty")] Product product)
        {
            if (ModelState.IsValid)
            {
                _productRepository.AddProduct(product);  
                
                return RedirectToAction(nameof(Index));
            }
            return View(product);
        }

也可以在controller裡面找一一個Creat的action,但這個action裡面只有回傳一個view,這個view就是在給一開始新增下去所顯示的form

    
        // GET: Product/Create
        public IActionResult Create()
        {
            return View();
        }

重build專案確認一下功能是否正常

Read

關於瀏覽這個部分,同樣先來看一下初始專案的樣板
和新增一樣,是直接讀取DBcontext
先傳入一個id,並用這個id去找對應的Product 物件
回傳給view

在先前已經有在ProductRepository.cs去實作GetProductById這個方法,這邊直接在controller去呼叫就可以了

 public Product GetProductById(int id)
{
   return GetAllProduct.FirstOrDefault(c => c.Id == id);
}

ProductController.cs

// GET: Product/Details/5
public ActionResult Details(int? id)
{
    if (id == null)
     {
        return NotFound();
     }

  var product = _productRepository.GetProductById(id.Value);
  if (product == null)
   {
      return NotFound();
   }

    return View(product);
  }

執行畫面
可以看到url是Details/1,其中1就是id
主要是根據我們在UseEndpoints裡面所設定的router

https://localhost:5001/Product/Details/1


上一篇
Day 24 使用ASP .NET Core 手把手打造一個購物網站 - 使用EF Core 異動欄位
下一篇
Day 26 使用ASP .NET Core 手把手打造一個購物網站 - Update & Delete
系列文
ASP.NET Core 入門實戰30天30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言