我对asp.net开发非常陌生。在我的asp.net mvc项目中,我具有模型“ Employee”,并且将“ Employee”模型的列表传递给RAZOR视图,并且我试图计算不同类型的雇员并显示摘要。
我的看法是这样的
@{
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”时,不会更新。
我确定该列表不是空的,因为正在显示员工姓名。
可以给我解释一下这里发生了什么以及正确的做法
最佳答案
在传递到我在原始评论中提到的视图之前,您应该在此之前进行此操作。您可以创建一个称为ViewModel的新对象,以完全按照页面上的样子表示数据。因此,我创建了一个简单的示例,我只使用了CSHTML页面中显示的Employee的4个属性。在您说过的“视图”上,您的MODEL是列表,杂货或任何Employee都将其更改为EmployeeViewModel。然后,在获取您的雇员列表的控制器中,将其设置为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中 View 中的项目数,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/33887423/