2017-05-29 42 views
0

我的目標是在數據庫中爲每個對象生成一個表,比如在我的汽車中。根據汽車的狀況,我想要在給定的汽車的給定表格中顯示信息。我的問題是,我目前在每張表中顯示關於每輛車的相同信息,而與汽車無關。在Razor中使用查詢對錶進行排序

有沒有辦法在Razor中執行查詢?我知道我現在的汽車的身份證,這樣我就可以查詢那些有用的信息。這裏是我現在的代碼:

@foreach (var car in Model.myCars) 
{ 



    <h5>@Html.DisplayFor(modelItem => car.CarName)</h5> 
    <table> 
     <thead> 
      <tr> 
       <th>Id</th> 
       <th>Sjekkpunkt</th> 
       <th>Avviksbeskrivelse</th> 
       <th>Risiko</th> 
       <th>Dato rapportert</th> 
      </tr> 
     </thead> 
     <tbody> 

     @foreach (var item in Model.myCheckpoints.Zip(Model.myAnswers, (Item1, Item2) => new { Item1, Item2 })) 
     { 


      <tr> 
       <td>@Html.DisplayFor(modelItem => item.Item1.Id)</td> 
       <td>@Html.DisplayFor(modelItem => item.Item1.Description)</td> 
       <td>@Html.DisplayFor(modelItem => item.Item2.Deviation)</td> 
       <td>@Html.DisplayFor(modelItem => item.Item2.Risk)</td> 
       <td>@Html.DisplayFor(modelItem => item.Item2.dateReported)</td> 
      </tr> 
     } 

這個代碼的問題,對於我每一輛車我迭代顯示完全相同的信息。現在Car表格和Model.myCheckpoints之間有一個連接。有沒有什麼方法可以查詢,以便在給定迭代中只能顯示連接到給定汽車的myCheckpoints?

+2

我強烈建議你在控制器執行這種邏輯的,而不是視圖。儘管在視圖中這樣做肯定是可行的,但這不是最佳實踐。你想要做的是在控制器中過濾你的集合,以便爲你的視圖提供一個特定的模型對象,該對象包含你需要顯示的內容,從而使你可以將邏輯保持在最低限度(如果有的話)視圖。你需要研究的是使用一個函數,比如LINQ的'Where',它可以讓你執行這個過濾。 – sleeyuen

回答

0

首先回答您的問題:

1.是否有在剃刀執行查詢的方法嗎?

我強烈建議不要在剃鬚刀中執行查詢操作,即使有辦法。 在控制器或單獨的幫助程序文件中執行所有查詢邏輯,並僅將查詢結果傳遞給視圖。

2.是否有任何方法可以查詢,以便在給定的迭代中只能顯示連接到給定汽車的myCheckpoints?

您可以根據需要使用linq函數進行任何查詢。 例如: var Result = anyList.Where(s => s.Anycolumn1> 12)。其中(s => s。Anycolumn2 < 20);

注意:如果您知道汽車的id,則在您的case中,然後使用id列進行過濾。

希望以上資料是有用的,請讓我知道你的想法或反饋

感謝 KARTHIK