康廷數位購物網 – 商品分類瀏覽功能雛形

康廷數位購物網第四篇,說明建立分類商品的瀏覽功能,歡迎閱讀

原文:http://www.kangting.tw/2014/10/blog-post_6.html

在已經建立好的Creategories 與 Products資料表中,建立測試資料。

 

分類(Categories)資料表中,建立了五種分類。

 

 

商品資料表(Prodcuts)中的每一項商均有其所屬的分類,以CategoryId 進行關聯。現在開啟Controllers/HomeController.cs 檔案,修改內容如下:

 

namespace Kangting.Controllers
{
    public class HomeController : Controller
    {
        // GET: Home
        public ActionResult Index()
        {
            KangtingEntities db = new KangtingEntities();
            var categories = db.Categories.ToList();
            return View(categories);
        }
        public ActionResult Browse(int categoryId)
        {
           // 取得分類商品
            return View();
        }
    }
}

 

Index() 方法取得分類表的所有內容,並且將其回傳,另外建立一個Browse() 方法,其接受一個 int 參數,暫時保留內容為白空,後續再完成其內容。開啟 Views/Home/Index.cshtml ,輸入以下的內容:

 

@model IEnumerable<Kangting.Models.Category>
@{
    ViewBag.Title = "Index";
}
<h2>Index</h2>
 
@if (Model.Count()==0)
{   
    <p>目前無任何商品</p>
}else{       
    foreach (var category in Model)
    {
        <p><label>@category.CategoryId</label>
<span><a href="Browse?categoryId=@category.CategoryId">@category.Name</a>
</span></p>
    }
}

 

foreach 迴圈逐步取出每一筆分類項目,建立 a 連結,於超連結中,指定 Browse 控制器連接所屬的分類編號 CategoryId。瀏覽Views/Home/Index.cshtml網頁內容,得到以下的結果:

 

列舉Categories 資料表中目前包含的所有分類項目,點選任何一個分類名稱超連結(例如電腦組件),出現以下的結果:

其中的網址列內容如下:

 

http://localhost:52143/Home/Browse?categoryId=1000

 

由於Home控制器中的 Browse 動作還未建立對應的View 檔案,因此傳入的編號 1000 並不會有任何作用,結果是找不到對應內容的錯誤網頁。 重新回到 Controllers/HomeController.cs 檔案,修改其中的動作方法Browse()如下:

 

public ActionResult Browse(int categoryId)
{
 KangtingEntities db = new KangtingEntities();
var categroy =
db.Categories.Include("Products").
Single(x => x.CategoryId == categoryId);
return View(categroy);
}

 

根據傳入的分類編號,透過 LINQ 取出商品資料表中此分類的商品項目集合將其回傳。緊接著建立此動作方法的對應檢視 Views/Home/ Browse.cshtml ,內容列舉如下:

 

@model Kangting.Models.Category
@{
    ViewBag.Title = "Browse";
}
<h2>分類: @Model.Name</h2>
<table>
    <thead>
        <tr>
            <th>商品編號</th>
            <th>商品名稱</th>
            <th>定價</th>
        </tr>
</thead>
    <tbody>      
            @foreach (var product in Model.Products)
            {
                <tr>
                    <td>@product.ProductId</td>
                    <td>@product.Name</td>
                    <td>@product.Price</td>
                </tr>
            }               
    </tbody>
</table>

 

其中透過 foreac 迴圈,搭配 table 標籤,建立商品清單,現在重新瀏覽Views/Home/Index.cshtml網頁內容,點選任何一個分類名稱超連結(例如電腦週邊),出現以下的結果: