【发布时间】:2013-06-27 21:49:27
【问题描述】:
我有两种相同的方法。
我的 [HttpGet] 方法返回我的 KPI 模型的所有数据列表。
我的 [HttpPost] 版本需要为我的 KPI 模型返回一个日期范围内的数据列表。
[HttpGet]
public ActionResult ViewDepartment (int id = 0)
{
// populate the IPACS_kpiHistory with all available data in the department
var kpi = model.IPACS_Department.IPACS_Functions.SelectMany(m => m.IPACS_Processes).SelectMany(m => m.IPACS_Procedures).SelectMany(m => m.IPACS_KPIS);
foreach (var item in kpi)
{
model.IPACS_KPIS.Add(item);
}
return View(model);
}
[HttpPost]
public ActionResult ViewDepartment (int id, System.DateTime startDate, system.DateTime endDate)
{
// populate the IPACS_kpiHistory with all available data in the department
var kpi = model.IPACS_Department.IPACS_Functions.SelectMany(m => m.IPACS_Processes).SelectMany(m => m.IPACS_Procedures).SelectMany(m => m.IPACS_KPIS);
foreach (var item in kpi)
{
model.IPACS_KPIS.Add(item);
}
return View(model);
}
在视图页面上,我需要显示每个 KPI(在 IPACS_KPIS 中找到)的列表,然后我将每个 KPI 的数据(在 IPACS_kpiHistory 中找到)相加。
这是我的查看页面部分:
@foreach (var item in @Model.IPACS_KPIS)
{
<tr class="gradeX">
<td>
@item.name
</td>
<td>
@item.IPACS_kpiHistory.Select(m => m.startAmount).Sum()
</td>
<td>
@item.IPACS_kpiHistory.Select(m => m.completedAmount).Sum()
</td>
<td>
@item.IPACS_kpiHistory.Select(m => m.endAmount).Sum()
</td>
</tr>
}
如何正确过滤掉 [HttpPost] 的数据并找到 startDate 和 endDate 之间的值?
我能想到的唯一方法是向我的模型添加 2 个属性 startDate 和 endDate 并使用剃须刀页面上的属性,但尝试查看是否可以在控制器并保持剃须刀页面清洁。
标准:
必须显示每一个 KPI(即使它没有数据(目前是这样工作的))
必须在[HttpPost] 方法中过滤掉不在daterange 之间的项目。
【问题讨论】:
-
如果您不需要其他 KPI,您可以将 Where(m => m.Date ...) 添加到以 var kpi = 开头的行
-
@NickBray 遗憾的是,我必须显示在 kpiHistory 表中确实有项目的 KPI,以及在 kpiHistory 表中还没有条目的 KPI。
标签: c# asp.net-mvc linq razor