我对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/

10-13 06:53
查看更多