2017-07-18 33 views
-2
顯示從SQL數據庫中的數據

我是一個MVC網上商店項目工作,我在SQL server做出分類和產品數據庫,現在我想從顯示在此數據庫中的類別網頁主頁。我創建一個會話_Layout.cshtml調用此會議嘗試過,但我發現,會議是不顯示在主頁上的類別,雖然它的工作是個好主意,因爲會話主要用於餅乾... 問題:這是做到這一點的正確方法,還是更好的做法? 我在Homecontroller.cs寫了這個:如何_Layout.cshtml在MVC

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Web; 
using System.Web.Mvc; 
using MVCOnlineShop.Models; 

namespace MVCOnlineShop.Controllers 
{ 
    public class HomeController : Controller 
    { 
     OnlineStoreEntities storeDB = new OnlineStoreEntities(); 
     // 
     // GET: /Home/ 

     public ActionResult Index() 
     { 
      var Categories = storeDB.Categories.ToList(); 
      return View(Categories); 
     } 
     // 
     // GET: /Home/Browse 
     public ActionResult Browse(string Category) 
     { 
      // Retrieve Category and its Associated Products from database 
      var CategoryModel = storeDB.Categories.Include("Products") 
       .Single(g => g.CategoryName == Category); 

      return View(CategoryModel); 
     } 
     // 
     // GET: /Home/Details 
     public ActionResult Details(int id) 
     { 
      var Product = storeDB.Products.Find(id); 

      return View(Product); 
     } 
     // 
     // GET: /Home/Browse?Category=Games 

    } 
} 

,並提出了PartialViewViews/Home稱爲CategoryLayout.cshtml

@model IEnumerable<MVCOnlineShop.Models.Category> 

@{ 
    ViewBag.Title = "Categories"; 
} 
<ul> 
    @foreach (var Category in Model) 
    { 

     <li> 
      @Html.ActionLink(Category.CategoryName, 
"Browse", new { Category = Category.CategoryName }) 
     </li> 
    } 
</ul> 

,並在我的_Layout.cshtml寫了這個:

<div class="collapse navbar-collapse" id="bs-example-navbar-collapse-1"> 

       <ul class="nav navbar-nav"> 

        <div class="dropdown"> 
         <button class="dropbtn">@Html.Partial("CategoryLayout")</button> 
         <div class="dropdown-content"> 
          <a href="#">Link 1</a> 
          <a href="#">Link 2</a> 
          <a href="#">Link 3</a> 
         </div> 
        </div> 



       </ul> 
       } 
+0

顯示您的代碼。 – Reshma

+0

如果類別不會改變,您可以將它們緩存在服務器端的應用程序狀態中。看到這個https://docs.microsoft.com/en-us/aspnet/web-forms/overview/data-access/caching-data/caching-data-at-application-startup-cs –

+0

@Reshma我編輯和添加有些代碼請檢查 – Ahmad

回答

1

第一的所有

編輯

  1. 創建一個返回的局部視圖
一個操作方法

不要使用索引返回局部視圖,因爲我們需要異步調用的局部視圖,譜寫新的行動。

public ActionResult GetCategories() 
    { 
     var Categories = storeDB.Categories.ToList(); 
     return PartialView("CategoryLayout",Categories); 
    } 

上述代碼將使用Categories模型渲染部分視圖,並將發送回佈局視圖。

  • 在佈局頁面代替

    @Html.Partial("CategoryLayout") 
    

    使用

    @Html.RenderAction("GetCategories","Home") 
    
  • 完成!

    相關問題