c# - 计算在 asp.net mvc 中查看的项目数

标签 c# asp.net asp.net-mvc asp.net-mvc-4 razor

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

相关文章:

c# - 知道 DataBinding 何时完成

C# LINQ OrderBy 来自另一个列表的值 (IEnumerable)

c# - 搜索存储过程未按预期工作

asp.net - 为 ASP.NET (Visual Studio) 服务器配置设置默认页面

jquery - 如何在 mvc4 web api 中使用 &lt;script&gt; 标签设置值?

javascript - 在 JS 变量中存储表行数

ASP.NET 缓存添加与插入

c# - CaSTLe Windsor激活错误IController,key "home"

c# - MVC 5 表格没有发布?

c# - 有类似 "RewriteToAction"的东西吗?