我是 asp.net 开发的新手。在我的 asp.net mvc 项目中,我有模型“Employee”,我正在将“Employee”模型列表传递给 RAZOR View ,我正在尝试计算不同类型的员工并显示摘要。
我的观点是这样的,
@{
int available = 0;
int onLeave = 0;
int away = 0;
int unAvailable = 0;
}
@foreach (var employee in Model){
<lable>@employee.Name</lable></br>
@if (@employee.Available){
@available=available+1;
}
@if (@employee.Unavailable){
@unAvailable=unAvailable;
}
@if (@employee.Away){
@away=away+1;
}
@if (@employee.Onleave){
@onLeave=onLeave+1;
}
}
<div>
<!--additional summary is displayed here-->
<label>Available:</label>@available
<label>Unavailable:</label>@unAvailable
<label>Away:</label>@away
<label>On Leave:</label>@onLeave
</div>
但是当我运行我的项目时,变量“available”、“unAvailable”、“away”和“onLeave”没有得到更新。
我确定该列表不为空,因为正在显示员工姓名。 有人可以向我解释这里发生了什么以及正确的方法吗
最佳答案
您应该像我在原始评论中提到的那样在传递给 View 之前在外部执行此操作。您可以创建一个名为 ViewModel 的新对象来完全按照您希望在页面上显示的数据来表示数据。所以我创建了一个简单的例子,我只使用了你在 CSHTML 页面中显示的 Employee 的 4 个属性。在你说你的模型是列表、数组或任何 Employee 的 View 上,将其更改为 EmployeeViewModel。然后在您获取员工列表的 Controller 中,将它们设置为 Employee ViewModel 的 Employees 属性。
public class EmployeeViewModel
{
public IEnumerable<Employee> Employees { get; set; }
public int TotalAvailable { get { return Employees.Count(emp => emp.Available); } }
public int TotalUnavailable { get { return Employees.Count(emp => emp.Unavilable); } }
public int TotalAway { get { return Employees.Count(emp => emp.Away); } }
public int TotalOnLeave { get { return Employees.Count(emp => emp.OnLeave); } }
}
public class Employee
{
public bool Available { get; set; }
public bool Unavilable { get; set; }
public bool Away { get; set; }
public bool OnLeave { get; set; }
}
//In the controller do this.
public ActionResult Index() //use your controller Action Name here
{
var employeeViewModel = new EmployeeViewModel { Employees = /*Your list of empoyees you had as a Model before here*/}
return View(employeeViewModel)
}
将您的 CSHTML 代码更改为如下内容:
@foreach(var employee in Model.Employees)
{
<label> @employee.Name </label></br>
}
<div>
<!--additional summary is displayed here-->
<label> Available:</label> @Model.TotalAvailable
<label> Unavailable:</label> @Model.TotalUnavailable
<label> Away:</label> @Model.TotalAway
<label> On Leave:</label> @Model.TotalOnLeave
</div>
关于c# - 计算在 asp.net mvc 中查看的项目数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33887423/