我无法在一个视图中显示网格包含和插入数据表单
我创建了一个应用程序,其中index.cshtml
我显示了所有员工的详细信息。
index.cshtml
<div>
WebGrid Control
<br /><br />
@Html.Partial("_WebGridPartial")
</div>
其中我创建了显示数据的部分视图。
现在我创建了另一个名为Create.cshtml
的视图,该视图获取员工详细信息并保存到数据库中。
但是,如果我想同时显示grid
和create employee form
,我该如何使用它?
问题是当我显示数据时它正在使用@model IEnumerable<MvcGrid.Models.EmpData>
对于输入字段,其类型为IEnumerable且在Create View
内,我需要使用@model MvcGrid.Models.EmpData
,并且只能使用一个模型语句。
答案 0 :(得分:1)
您可以传递index.cshtml
一个ViewModel,其中包含您的网格数据和一个员工的ViewModel。
e.g。
public class EmployeesViewModel
{
public IEnumerable<EmployeeViewModel> employeesForGrid { get; set; }
public EmployeeViewModel employeeForEdit { get; set; }
}
在你的控制器......
public ViewResult Index()
{
IEnumerable<Employee> employees = _employeeRepo.GetEmployees();
IEnumerable<EmployeeViewModel> employeesForGrid = MapEmployeesForView(employees);
var model = new EmployeesViewModel()
{
employeesForGrid = employeesForGrid,
employeeForEdit = new EmployeeViewModel();
};
return View(model);
}
然后index.cshtml
:
@model EmployeesViewModel
@{Html.RenderPartial("_WebGridPartial", Model.employeesForGrid);}
<br/><br/>
@{Html.RenderPartial("_Create", Model.employeeForEdit);}