ASP.NET MVC - 在 foreach 中使用剃刀视图显示计数
ASP.NET MVC - Show counts using razor view in foreach
下面是我的剃须刀代码
for (int i = 0; i < Model.physicians.Count; i++)
{
<div>
@Model.physicians[i].npi -- Count:
</div>
}
我有 table npipatients
如下:
npiId
Patientname
1
a
1
b
2
c
我在剃刀视图中的输出是这样的
1 -- Count:2
2 -- Count:1
我需要编写 ajax 调用,但如何将 npiid 传递给 foreach 的 ajax 方法并将 npi 计数的结果分配给标签。
$.ajax({
type: "POST",
url: "/mycontroler/GetnpiDetails",
dataType: "json",
data: { "npiId": npiId },
success: function (data) {
}
});
根据我对你的问题的理解(如果我错了请纠正我),看起来你正试图用每个 Npi 记录触发 API 以获得(分组)计数。
在我看来,效率不高,假设有 100 条记录,您将调用 API 100 次。这将导致降低服务器性能(处理相同任务 100 次)以及数据库服务器(查询相同数据 100 次)。
相反,
您需要先通过 .GroupBy()
npi 记录和 .Count()
对每个分组记录在 Controller 中进行 数据转换。
预期输出:
[
{ "npi": 1, "count": 2 },
{ "npi": 2, "count": 1 }
]
如前所述,使用 1 个 API 调用可以节省调用 m 时间的性能。
你需要做什么:
- 模型 - 使用模型 class 设计您想要的输出。
- 控制器 - 执行数据转换:按
npiId
分组。
- 视图 - 绑定来自控制器的值。
Model
public class GroupedNpiModel
{
public int NpiId { get; set; }
public int Count { get; set; }
}
Controller
public ActionResult Index()
{
var data = new []
{
new { NpiId = 1, Patientname = "a" } ,
new { NpiId = 1, Patientname = "b" } ,
new { NpiId = 2, Patientname = "c" }
};
var groupedNpi = data.GroupBy(x => x.NpiId)
.Select(g => new GroupedNpiModel
{
NpiId = g.Key,
Count = g.Count()
})
.ToList();
return View(groupedNpi);
}
View
@model IEnumerable<HelloWorldMvcApp.GroupedNpiModel>
@foreach (var npi in Model)
{
<div>
@npi.NpiId -- @npi.Count
</div>
}
下面是我的剃须刀代码
for (int i = 0; i < Model.physicians.Count; i++)
{
<div>
@Model.physicians[i].npi -- Count:
</div>
}
我有 table npipatients
如下:
npiId | Patientname |
---|---|
1 | a |
1 | b |
2 | c |
我在剃刀视图中的输出是这样的
1 -- Count:2
2 -- Count:1
我需要编写 ajax 调用,但如何将 npiid 传递给 foreach 的 ajax 方法并将 npi 计数的结果分配给标签。
$.ajax({
type: "POST",
url: "/mycontroler/GetnpiDetails",
dataType: "json",
data: { "npiId": npiId },
success: function (data) {
}
});
根据我对你的问题的理解(如果我错了请纠正我),看起来你正试图用每个 Npi 记录触发 API 以获得(分组)计数。
在我看来,效率不高,假设有 100 条记录,您将调用 API 100 次。这将导致降低服务器性能(处理相同任务 100 次)以及数据库服务器(查询相同数据 100 次)。
相反,
您需要先通过 .GroupBy()
npi 记录和 .Count()
对每个分组记录在 Controller 中进行 数据转换。
预期输出:
[
{ "npi": 1, "count": 2 },
{ "npi": 2, "count": 1 }
]
如前所述,使用 1 个 API 调用可以节省调用 m 时间的性能。
你需要做什么:
- 模型 - 使用模型 class 设计您想要的输出。
- 控制器 - 执行数据转换:按
npiId
分组。 - 视图 - 绑定来自控制器的值。
Model
public class GroupedNpiModel
{
public int NpiId { get; set; }
public int Count { get; set; }
}
Controller
public ActionResult Index()
{
var data = new []
{
new { NpiId = 1, Patientname = "a" } ,
new { NpiId = 1, Patientname = "b" } ,
new { NpiId = 2, Patientname = "c" }
};
var groupedNpi = data.GroupBy(x => x.NpiId)
.Select(g => new GroupedNpiModel
{
NpiId = g.Key,
Count = g.Count()
})
.ToList();
return View(groupedNpi);
}
View
@model IEnumerable<HelloWorldMvcApp.GroupedNpiModel>
@foreach (var npi in Model)
{
<div>
@npi.NpiId -- @npi.Count
</div>
}