我正在尝试创建一个局部视图来显示一些数据。我的控制器接受一个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个不同的记录(但是,没有以任何方式过滤)。
以下是视图的重要部分:
@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;
发布于 2012-11-08 21:36:28
大吉大利,晚上吃鸡!
原来问题出在模型到表的映射上。我正在处理的表有一个组合键,我不知道它...在阅读了mipe34关于主键的内容后,我决定对表结构做一些调查。在发现组合键之后,我添加了第二个键的映射,一切工作正常。
这个问题非常令人困惑,因为当在SQL Management Studio中运行时,LINQ生成的SQL运行得非常好。
谢谢大家!
发布于 2012-11-08 19:48:14
点击模型变量后面的断点,看看LINQ - VS生成的SQL查询应该会为你显示出来。您还可以尝试执行查询(在查询的末尾添加.ToList() )以查看实际结果,即集合中的内容,以区分查询或视图中是否存在问题。
https://stackoverflow.com/questions/13295865
复制相似问题