C# 查看来自其他模型的数据会导致显示DynamicProxies对象
我目前正在开发一个帮助台系统,并编写一个视图来查看用户的所有票据 票证由父数据组成,如票证类别、开放用户、技术人员等,然后是带有票证记录的子数据。第一个票证注释(在初始创建时添加)是票证描述。在我的观点中的票表中,我只想为每张票显示一个注释(票描述)。这是我的控制器:C# 查看来自其他模型的数据会导致显示DynamicProxies对象,c#,asp.net-mvc,linq,visual-studio,razor,C#,Asp.net Mvc,Linq,Visual Studio,Razor,我目前正在开发一个帮助台系统,并编写一个视图来查看用户的所有票据 票证由父数据组成,如票证类别、开放用户、技术人员等,然后是带有票证记录的子数据。第一个票证注释(在初始创建时添加)是票证描述。在我的观点中的票表中,我只想为每张票显示一个注释(票描述)。这是我的控制器: public ActionResult Index() { var model = from t in db.Tickets join tn in db.TicketNotes on t.
public ActionResult Index()
{
var model = from t in db.Tickets
join tn in db.TicketNotes on t.TicketId equals tn.TicketId
where t.OpenUserId == new Guid("00000000-0000-0000-0000-000000000000")
orderby t.OpenDate
select t;
return View(model);
}
我的ViewModel:
namespace HelpDesk.WebUI.ViewModel
{
public class UserTickets
{
public int TicketNumber { get; set; }
public Guid CategoryId { get; set; }
public virtual Category Category { get; set; }
public Guid OpenUserId { get; set; }
public virtual User OpenUser { get; set; }
public DateTime OpenDate { get; set; }
public Guid TechnicianId { get; set; }
public virtual User Technician { get; set; }
public Guid TicketStatusId { get; set; }
public virtual TicketStatus TicketStatus { get; set; }
public Nullable<DateTime> CloseDate { get; set; }
public string Note { get; set; }
}
}
和我的建议视图,但我在视图中的这一行上得到一个错误:
@Html.DisplayFor(modelItem => item.TicketNotes.OrderBy(t=t.TicketId).First().TicketText)
这意味着当前上下文中不存在“thename”t。(可选)在控制器中使用此选项可获得更好的性能,因为它将急切地加载您的票务,而不是惰性地加载它们:
public ActionResult Index()
{
var model = db.Tickets
.Include(t=>t.TicketNotes)
.Where(t.OpenUserId == new Guid("00000000-0000-0000-0000-000000000000"))
.OrderBy(t=>t.OpenDate);
return View(model);
}
并在您的视图中使用此选项(这将适用于即时和延迟加载的笔记):
看起来您正在使用实体模型,因此数据的实际类型不是您的
票据
,而是由EntityFramework动态生成的一些数据类型,用于处理实际的加载细节
你可以:
Ticket
保持为Ticket
。但在这种情况下,您必须加载所有您的Linq查询有点毫无意义,因为您只选择了票据,而没有选择票据注释。这些笔记稍后会被延迟加载,我在我的原始帖子中添加了更多信息。有人知道我为什么会出错吗?@djblois,如果不是复制错误,那就意味着你忘记了lambda表达式中的尖括号-
item.TicketNotes.OrderBy(t=t.TicketId)
应该是item.TicketNotes.OrderBy(t=>t.TicketId)
。谢谢你的工作。很抱歉,我刚刚在新的工作岗位上学习MVC,感到不知所措。我的老板告诉我他要教我,但我完全靠自己学习。@djblois相信我,我很理解你。下一次要更加注意——这不是什么框架特性,而是一个小的打字错误。祝你好运。尤金,我是从上面的另一张海报上抄来的,这是他们的打字错误。一开始我还以为是我的错。
public ActionResult Index()
{
var model = db.Tickets
.Include(t=>t.TicketNotes)
.Where(t.OpenUserId == new Guid("00000000-0000-0000-0000-000000000000"))
.OrderBy(t => t.OpenDate);
return View(model);
}
@Html.DisplayFor(modelItem => item.TicketNotes.OrderBy(t=t.TicketId).First().TicketText)
public ActionResult Index()
{
var model = db.Tickets
.Include(t=>t.TicketNotes)
.Where(t.OpenUserId == new Guid("00000000-0000-0000-0000-000000000000"))
.OrderBy(t=>t.OpenDate);
return View(model);
}
@Html.DisplayFor(modelItem => item.TicketNotes.OrderBy(t=t.TicketId).First().TicketText)