一部のデータを表示するために部分ビューを作成しようとしています。私のコントローラーは を受け取り、string itemID
それに基づいてクエリを実行します。部分ビューが呼び出されると、同じレコードが何度も表示されます。
注: セキュリティ上の理由から、オブジェクトの名前を変更しました。
[ChildActionOnly]
public ActionResult someAction(string itemID = "")
{
//Empty itemID
if(string.IsNullOrEmpty(itemID))
{
return RedirectToAction("Index", "Search");
}
var model = _db.someTable
.Where(r => r.itemID == itemID)
.OrderBy(r => r.col1)
.ThenBy(r => r.col2)
.Take(20);
return PartialView("_myView", model);
}
OrderBy
メソッドとメソッドを削除しようとしましたThenBy
が、結果は同じままです(重複しているため、順序は関係ありません...)。メソッドを削除すると.Where
、期待どおりに機能し、20 の異なるレコードが表示されます (ただし、決してフィルタリングされません)。
私のビューは、List テンプレートを使用して Visual Studio によって作成されました。.Where
このビューは、LINQ ステートメントからメソッドを削除することで機能することが証明されています。ビューの重要な部分は次のとおりです。
@model IEnumerable<MyApp.Models.OperationData>
.
.
.
@foreach (var item in Model) {
<tr>
<td>
@Html.DisplayFor(modelItem => item.some column)
</td>
.
.
.
このクエリの何が問題なのかについてのアイデアはありますか?
編集:他のLINQ構文を試してみましたが、同じ結果になりました:
var model = from r in _db.someTable where r.itemID == itemID select r;