【发布时间】:2015-09-19 06:31:30
【问题描述】:
我一直致力于在 foreach 循环中获取计数记录。我将需要在一个页面上运行许多这些计数。我正在寻找最有效的方法来做到这一点。
我已经走到了这一步,但我不确定我是否走在正确的道路上。如果是,我如何将这些数据放入我的视图中。
视图模型
public class AgtLeadStatsListVM
{
public string LoanAgent { get; set; }
public DateTime LeadDate { get; set; }
public int LeadDailyCt { get; set; }
public int LeadWeeklyCt { get; set; }
public int LeadMTDCt { get; set; }
public int LeadYTDCt { get; set; }
public IEnumerable<MWFUser> AgentList { get; set; }
public virtual WebLead Lead { get; set; }
}
控制器
var model = new AgtLeadStatsListVM();
{
// Get Selected Agent's Information
var AgentList = from l in db.MWFUsers
where (l.UserTitle == "Banker"
select l;
foreach (var agent in AgentList)
{
// Daily Lead Count
var LeadDailyCt = db.WebLeads.Count(x => (x.LoanAgent == agent.UserEmail)
&& (x.LeadDate >= todayDate && x.LeadDate <= todayEndDay));
// Weekly Lead Count
var LeadWeeklyCt = db.WebLeads.Count(x => (x.LoanAgent == agent.UserEmail)
&& x.LeadDate >= firstOfWeek
&& x.LeadDate <= todayEndDay);
// Monthly Lead Count
var LeadMTDCount = db.WebLeads.Count(x => (x.LoanAgent == agent.UserEmail)
&& x.LeadDate >= firstOfMonth
&& x.LeadDate <= todayEndDay);
// YTD Lead Count
var LeadYTDCount = db.WebLeads.Count(x => (x.LoanAgent == agent.UserEmail)
&& x.LeadDate >= firstOfMonth
&& x.LeadDate <= todayEndDay);
}
}
查看
@model LoanModule.ViewModels.AgtLeadStatsListVM
<div>
@foreach (var item in Model.AgentList)
{
<p>@Model.LoanAgent</p>
<p>@Model.LeadDailyCt</p>
<p>@Model.LeadWeeklyCt</p>
<p>@Model.LeadMTDCt</p>
<p>@Model.LeadYTDCt</p>
}
我的视图收到此错误:对象引用未设置为对象的实例。 (在线:@foreach(Model.AgentList 中的变量项))
我错过了什么?
谢谢。
【问题讨论】:
-
为了“更好的实践”,我会创建一个
IEnumerable<AgtLeadStatsListVM> BuildAgentList(string title)的函数并正确实现它。这将很容易看出在执行var model = new AgtLeadStatsListVM(); model.AgentList = BuildAgentList("Banker");时主要的“断开”问题是什么。 NPE 看起来是因为不了解 C# 属性是如何设置的。 -
此外,后续属性的多重性都是错误的 - 这些可能应该是每个生成的“代理”对象的一部分。
标签: c# asp.net-mvc foreach