Asp.net mvc 在视图MVC中的Model.Count()中设置默认值

Asp.net mvc 在视图MVC中的Model.Count()中设置默认值,asp.net-mvc,razor,Asp.net Mvc,Razor,我是MVC新手,正在尝试构建一个包含部门的应用程序,每个部门都有该部门下列出的员工 所以我的问题是如何在视图页面中设置默认值Model.Count() 这是我的代码(请注意,当我在模型中循环时,如果该特定部门中没有员工,则使用Model.Count()始终为0,并且ActionLink未出现在页面中!因此,如果您想知道为什么我要对ActionLink使用这种实现,因为我想将当前的部门ID传递到Create视图,并自动填充到@Html.HiddenFor(员工部门)中,我需要为模型设置默认值) 任

我是MVC新手,正在尝试构建一个包含部门的应用程序,每个部门都有该部门下列出的员工

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

这是我的代码(请注意,当我在模型中循环时,如果该特定部门中没有员工,则使用Model.Count()始终为0,并且ActionLink未出现在页面中!因此,如果您想知道为什么我要对ActionLink使用这种实现,因为我想将当前的部门ID传递到Create视图,并自动填充到@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>

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

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

public class EmployeeListVm
{
  public List<Employee> Employees { set;get;}
  public int DepartmentId { set;get;}
  public string DepartmentName { set;get; }
}
假设
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})
@model EmployeeListVm
显示@Model.DepartmentName的员工
@foreach(Model.Employees中的var项)
{
@item.EmployeeName

} @ActionLink(“创建新的”,“创建”,新的{id=Model.DepartmentId})
为什么要将1指定给Model.Count()?@derloopkat它不起作用这只是一个示例,上面详细阐述了我要实现的目标和我要实现的目标!感谢您的快速回复。您的循环没有意义。为什么要生成一个“创建新”链接,为每个现有员工创建一个新的
Employee
(如果您有10名员工属于一个部门,您将创建10个相同的链接)@StephenMuecke我知道这毫无意义,但我无法获取employee.DepartmentId,除非我执行了上述代码,顺便说一句,我只是使用以下代码限制循环创建“Create new”{if(!employee.Equals(1)){break;}您的模型完全错误。您需要一个模型,其中包含
部门的集合
(而
部门
包含其
员工的集合
。然后在视图中循环每个
部门
(并根据其ID生成链接)对于每个部门,使用嵌套循环显示其
Employee
的集合谢谢您的解决方案我已经实现了相同的解决方案,但是当我试图从ActionLink中的模型中获取DepartmentId时,DepartmentId不会出现在intellisense中,即使我按原样写入,它也会给我一个错误不包含的定义DepartmentId@HusseinALSHAMIRI您的视图的模型是什么?@Khyron请再次检查该问题我刚刚用创建控制器更新了它,模型名称为Employee@HusseinALSHAMIRI我建议你仔细阅读答案!我在答案中明确提到,视图应该是强类型的新的视图模型。你不能仅仅删除TryUpdateModel。这是你将html响应中的数据返回到c#代码的整个方法的核心。还有其他方法不涉及TryUpdateModel,例如我提供的链接中提到的方法。另外,请注意,你上次回复的人不对。我认为nk Shyju给了你一个答案。
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);
}
@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})