我有一个问题如何解决我的问题。有一张有物品的桌子。每个项目都具有“打开”或“关闭”的状态。例如,9项具有“关闭”状态,14项具有“打开”状态。我需要找到开放项和封闭项(14 - 9 = 5)之间的区别。我如何在ViewBag的帮助下做到这一点?据我所知,需要在控制器中编写“计数”函数,并通过ViewBag将结果传输到View。但我不知道怎么写这段代码。结果应该显示在“视图”页面上。
Request.cs (模型):
public class Request
{
public int Id { get; set; }
public string Name { get; set; } = "";
public string Status { get; set; } = "";
}Controller.cs:
public IActionResult Requests()
{
var Requests = _repo.GetAllRequests();
return View(Requests);
}储存库:
public Request GetRequest(int id)
{
return _ctx.Requests.FirstOrDefault(c => c.Id == id);
}
public List<Request> GetAllRequests()
{
return _ctx.Requests.ToList();
}查看:
<div>
<table>
@foreach (var request in Model)
{
<tr>
<th>@request.Name</th>
<th>@request.Status</th>
</tr>
}
</table>
</div>发布于 2022-02-07 18:45:24
您将向Count传递一个谓词,以按状态筛选请求:
public IActionResult Requests()
{
var requests = _repo.GetAllRequests();
ViewBag.OpenRequests = requests.Count(r => r.Status == "open");
ViewBag.ClosedRequests = requests.Count(r => r.Status == "closed");
return View(requests);
}但是,您可以创建一个视图模型来保存视图所需的所有信息/数据,而不是使用ViewBag:
// ViewModel
public class RequestViewModel
{
public List<Request> Requests { get; set; }
public int OpenRequests { get; set; }
public int ClosedRequests { get; set; }
}
// Controller
public IActionResult Requests()
{
var requests = _repo.GetAllRequests();
var viewModel = new RequestViewModel();
viewModel.OpenRequests = requests.Count(r => r.Status == "open");
viewModel.ClosedRequests = requests.Count(r => r.Status == "closed");
viewModel.Requests = requests;
return View(viewModel);
}
// View: set the model for the view
@model Project.Namespace.RequestViewModel
...
<div>
<div>Open Requests: @model.OpenRequests</div>
<div>Closed Requests: @model.ClosedRequests</div>
<div>Difference/delta: @(model.OpenRequests - model.ClosedRequests)</div>
</div>发布于 2022-02-07 18:53:05
private StatisticScore()
{
var openCount =_ctx.Requests.Where(m=> m.Status == "Open").Count();
var closedCount = _ctx.Requests.Where(m=> m.Status == "Closed").Count();
ViewBag.Difference = openCount - closedCount
} <label> Difference </label> @ViewBag.Difference 另外,我建议您不要将状态字段用作字符串。如果你把它当作一个明灯,你会更容易的。
https://stackoverflow.com/questions/71023567
复制相似问题