如何在mvc3中的一个视图中显示webgrid内容并插入数据表单?

时间:2012-04-05 15:08:05

标签: asp.net-mvc asp.net-mvc-3 model-view-controller

我无法在一个视图中显示网格包含和插入数据表单

我创建了一个应用程序,其中index.cshtml我显示了所有员工的详细信息。

index.cshtml

<div>
WebGrid Control
<br /><br />
@Html.Partial("_WebGridPartial")
</div>

其中我创建了显示数据的部分视图。

现在我创建了另一个名为Create.cshtml的视图,该视图获取员工详细信息并保存到数据库中。

但是,如果我想同时显示gridcreate employee form,我该如何使用它? 问题是当我显示数据时它正在使用@model IEnumerable<MvcGrid.Models.EmpData> 对于输入字段,其类型为IEnumerable且在Create View内,我需要使用@model MvcGrid.Models.EmpData,并且只能使用一个模型语句。

1 个答案:

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