2014-02-26 62 views
0

我是ASP.NET MVC的初學者。.NET MVC 4嵌套列表數據

我想要一個視圖中的嵌套列表。

圖片中「MENÜLER」是一個產品組,其他數據是產品組的產品。

所以我想按產品組列出產品。

如何做到這一點任何人都可以解釋我?

Example Picture

+1

爲了什麼我得到,你想要做一個'.GroupBy'然後只是遍歷視圖中的數據。 –

回答

0

我是固定的;

Public Class ProductGroup 

    Private _GroupID As String 
    Public Property GroupID() As String 
     Get 
      Return _GroupID 
     End Get 
     Set(ByVal value As String) 
      _GroupID = value 
     End Set 
    End Property 

    Private _Name As String 
    Public Property Name() As String 
     Get 
      Return _Name 
     End Get 
     Set(ByVal value As String) 
      _Name = value 
     End Set 
    End Property 

    Private _TopGroupID As String 
    Public Property TopGroupID() As String 
     Get 
      Return _TopGroupID 
     End Get 
     Set(ByVal value As String) 
      _TopGroupID = value 
     End Set 
    End Property 

    Private _RestaurantID As String 
    Public Property RestaurantID() As String 
     Get 
      Return _RestaurantID 
     End Get 
     Set(ByVal value As String) 
      _RestaurantID = value 
     End Set 
    End Property 

    Private _Products As List(Of Product) 
    Public Property Products() As List(Of Product) 
     Get 
      Return _Products 
     End Get 
     Set(ByVal value As List(Of Product)) 
      _Products = value 
     End Set 
    End Property 

End Class 

這是我的產品,一流的

Public Class Product 
    Private _ProductID As String 
    Public Property ProductID() As String 
     Get 
      Return _ProductID 
     End Get 
     Set(ByVal value As String) 
      _ProductID = value 
     End Set 
    End Property 
    Private _Name As String 
    Public Property Name() As String 
     Get 
      Return _Name 
     End Get 
     Set(ByVal value As String) 
      _Name = value 
     End Set 
    End Property 

    Private _Price As String 
    Public Property Price() As String 
     Get 
      Return _Price 
     End Get 
     Set(ByVal value As String) 
      _Price = value 
     End Set 
    End Property 


End Class 

EF查詢:

Public Function ListProductsByGroups(ByVal RestID As Integer) As IList(Of ProductGroup) 
     Dim groups As List(Of ProductGroup) = (From g In db.TBL_URUN_GRUP 
         Where g.RestoranID = RestID 
         Select New ProductGroup With 
           {.GroupID = g.GrupID, 
           .Name = g.Isim, 
           .RestaurantID = g.RestoranID, 
           .TopGroupID = g.TopGrupID 
            }).ToList() 

     For Each item In groups 
      Dim products As List(Of Product) = (From p In db.TBL_URUNLER 
               Where p.GrupID = item.GroupID 
               Select New Product With 
                {.Name = p.Isim, 
                 .Price = p.Fiyat 
                } 
                ).ToList() 
      item.Products = products 

     Next 
     Return groups 

    End Function 

,並查看:

@Code 
      For Each item In ViewBag.Products 

     @<div class="box"> 
       <div class="title">@item.Name</div> 
      @For Each products In item.Products 

        @<div class="column1-1"> 
         <div> 
          <div class="left"> 
        <img style="vertical-align:middle" src="content/images/Icons/plus.png" /> 
        <input type="text" value="1" class="textcenter" style="width:20px" /> 
           </div> 
          <div class="productlist left"> @products.Name <span>Çok taze tavuk eti ile marulun eşşisz uyumu</span> @products.Price</div> 
         </div> 


         </div> 

       Next 

      </div> 

       Next 

    End Code 
+0

這是MVC的次優解決方案。 – Cookie

+0

你能解釋我的最佳解決方案是什麼? – cptc

+0

首先,不要使用foreach,而應該使用視圖模板,一個用於IEnnumerable產品,一個用於產品。 – Cookie

0

您可以使用下拉列表。代碼比長篇演說更好,所以樣品:

你有漢堡類型:

public class Burger 
{ 
    public string Name { get; set; } 
    public int ID { get; set; } 
} 

用於填充代碼下拉列表:

public static SelectList GetBurgers(int index) 
{ 
    List<Burger> burgers= new List<Burger>(); 

    burgers.Add(new Burger() { ID = 1, Name = 「Chicken」 }); 
    burgers.Add(new Burger() { ID = 2, Name = 「Bicky」 }); 
    burgers.Add(new Burger() { ID = 3, Name = 「BigMac」 }); 
    SelectList selectList = new SelectList(burgers, 「ID」, 「Name」, index); 
    return selectList; 
} 

從Index操作方法,讓我們添加將選擇列表對象添加到ViewData字典並請求渲染視圖;

public ActionResult Index() 
{ 
    ViewData["burgers"] = GetBurgers(1); 
    return View(); 
} 

右鍵單擊剛剛編碼的方法,然後選擇添加視圖; 使用Html幫助器方法BeginForm創建表單並添加下拉列表和提交按鈕。這似乎是:

<% using (Html.BeginForm()) { %> 
<%= Html.DropDownList(「lstBurgers」, ViewData["Burgers"] as SelectList) %> 
<input type=」submit」 value=」Post」 /> 
<% } %> 

你有當用戶點擊後按鈕,現在創建一個操作方法,將處理後:

[AcceptVerbs(HttpVerbs.Post)] 
public ActionResult Index(FormCollection forms) 
{ 
    int selectedItem = Convert.ToInt32(forms["lstBurgers"]); 
    ViewData["burgers"] = GetBurgers(selectedItem); 
    return View(); 
} 

您可以爲每種類型的產品下拉列表。對於文檔您對MVC 4和型動物控制許多政黨成員和文檔:http://www.asp.net/mvc/mvc4

http://www.asp.net/mvc/tutorials/mvc-4

希望這有助於你!

+0

感謝您的回答。但我不想使用下拉列表。示例http://s30.postimg.org/xlceyw2xt/image.jpg – cptc