2015-11-12 24 views
0

我有一個數據庫,我有一輛汽車,有一些汽車,每個設備都有一個類型。我想查看一下表中每種類型的汽車數量。我到現在爲止,在控制器中。計算一個物品的多少個元素並返回到一個視圖

控制器:

public ActionResult CountCars() 
    { 

     var count = db.Cars.Where(s => s.Cars.Name.Contains("Ford")).Count(); 


     var view = new CountCarsViewModel() 
     { 
      Count = count 
     }; 

     return PartialView("_MainSideBarPartialLayout", view); 

    } 

ViewModel類:

public class CountCarsViewModel 
{ 

    public int Count { get; set; } 
} 

查看:

@model Project.ViewModels.Home.CountCarsViewModel 
    <span class="badge">@Model.Count</span> 

,但它不會計算任何汽車..剛開0

誰都可以幫助,與soluti上?

+1

你確定任何東西都與你的where子句匹配嗎?調試並查看返回的內容。將調用移動到另一行可能會更好,因此您可以實際看到查詢返回的內容。也有人懷疑'Car'會擁有'Cars'屬性。換句話說,你的查詢不應該是's.Name.Contains(...)'?在這方面,在這裏看到你的實際實體類可能會有所幫助。 –

回答

0

您當前的查詢正在返回0可能是因爲沒有匹配的車名爲Ford您必須調試並查看發生了什麼。要回答每種類型我有表中的多少汽車需要GroupBy: -

var view= db.Cars.GroupBy(s => s.Cars.Name) 
        .Select(x => new CountCarsViewModel 
         { 
           CarName = x.Key, 
           Count = x.Count() 
         }); 
return PartialView("_MainSideBarPartialLayout", view); 

更改您視圖模型包括一個屬性來保存CarName這樣的: -

public class CountCarsViewModel 
{ 
    public string CarName {get; set; } 
    public int Count { get; set; } 
} 
+0

謝謝你的回答@Rahul Singh。但它仍然返回0 ..我認爲你是在正確的軌道上。但是,我想要的只是計算一件物品的數量。 –

+0

@PerSolbakken - 在這種情況下,從Count中移除Count()'並調試並查看是否有任何項目,也有Car存在於'db.Cars'中。就我的答案而言,它會返回每輛車和每輛車的數量。 –

+0

它從CountCars()方法創建一個新視圖後突然生效。我得到正確的項目數。但它不會與partialview一起工作..我如何使用partialviews顯示計數?它可以正常工作。有線.. –

-1

我想問題是在「返回PartialView(」_ MainSideBarPartialLayout「,view);」中使用「PartialView」。嘗試在普通視圖中查看結果,然後使其部分。如果您堅持使用部分視圖,可能需要觸發部分視圖才能顯示正確的計數。