我是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();
}
答案 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})