在View MVC中的Model.Count()中设置默认值

时间:2016-10-11 00:27:11

标签: asp.net-mvc razor

我是MVC的新手并尝试构建一个具有部门的应用程序,并且每个部门都有该部门下列出的员工!

所以我的问题是我如何在View页面中设置默认值Model.Count()

这是我的代码(请注意,当我在模型中循环并且如果该特定部门中没有员工时,Model.Count()始终为0且ActionLink未出现在页面中!所以我需要设置默认值对于模型,如果你想知道为什么我在ActionLink上使用这样的实现,因为我想将当前 DepartmentId传递给Create View并将其填充到员工部门的@ Html.HiddenFor自动)

任何帮助将不胜感激

<p>
    @Model.Count() = 1; 

    @foreach (Employee employee in Model)
    {
        @Html.ActionLink("Create New", "Create", new { id = employee.DepartmentId })

        if (!employee.Equals(1))
        {
            break;
        }

    }    
</p>

我的控制器

[HttpGet]
    [ActionName("Create")]
    public ActionResult Create_Get(int id)
    {
        Employee employee = new Employee();
        employee.DepartmentId = id; 
        return View(employee);
    }

    [HttpPost]
    [ActionName("Create")]
    public ActionResult Create_Post()
    {
        Employee employee = new Employee();
        TryUpdateModel(employee);

        if (ModelState.IsValid)
        {
            EmployeeContext employeeContext = new EmployeeContext();
            employeeContext.AddEmployee(employee);
            return RedirectToAction("Index","Employee", new { id = employee.DepartmentId });
        }
        return View();
    }

My Department and Employee list

1 个答案:

答案 0 :(得分:0)

你的代码没有意义! Count()方法返回集合中的项目数。您不能为此分配/设置新值!赋值语句的左侧部分应该是变量,属性或索引器,而不是方法!

理想情况下,您应该拥有一个包含员工和部门ID列表的视图模型。

public class EmployeeListVm
{
  public List<Employee> Employees { set;get;}
  public int DepartmentId { set;get;}
  public string DepartmentName { set;get; }
}

并在您的GET操作中,设置2个属性值并将其发送到视图

public ActionResult EmployeeList(int departmentId)
{
   var vm =new EmployeeListVm();
   vm.DepartmentId=departmentId;

   //You can also get more info about department ex : Name
   var dept= GetDeapermentFromId(departmentId);
   vm.DepartmentName = dept.Name;

   // to do : Load vm.Employees
   return View(vm);
}

假设GetDeapermentFromId方法接受部门ID并返回带有数据的部门实体/ DTO。

现在,您的视图应该强烈键入此新视图模型。在视图中,现在您可以根据需要使用DepartmentId属性来构建链接

@model EmployeeListVm
<h2>Showing employees for @Model.DepartmentName</h2>
@foreach(var item in Model.Employees)
{
  <p>@item.EmployeeName</p>
}
@Html.ActionLink("Create new","Create",new { id=Model.DepartmentId})