使用Details Scaffolding在单个View中显示多行

时间:2014-06-20 05:58:31

标签: asp.net-mvc linq asp.net-mvc-4 .net-4.5

我有一个员工详细信息表,其中有一个名为Role的列。每个员工都可以拥有多个角色。目前以下是我从SQL获取的记录集,我希望使用DETAILS作为脚手架在MVC 4中显示。

Emp_ID | Emp_Name |角色

E101 |员工1 |主
E101 |员工1 |次级

那么如何为此编写LINQ和View代码。

1 个答案:

答案 0 :(得分:2)

试试这个:

拥有Employee的模型类

public Employee
{
   public int EmployeeID{get;set;}
   public string EmployeeName{get;set;}
   public string Role{get;set;}
}

在控制器中:

public ActionResult List()
{
    DataSet ds=db.GetEmployees();
    var emp=( from t in ds.Tables[0].AsQuerable()
              //replace column names correctly with your db columns.
              select Employee{ EmployeeID=Int32.Parse(t["EmployeeID"].ToString()),
                               EmployeeName=t["EmployeeName"].ToString(),
                               Role=t["Role"].ToString()}).ToList<Employee>();
    return View(emp);
}

使用&#34;列表&#34;添加视图级联类型,强类型为Employee模型,它将自动生成视图模型。

查看:

    @model IEnumerable<Models.Employee>

@{
    ViewBag.Title = "view";
}

<h2>view</h2>

<p>
    @Html.ActionLink("Create New", "Create")
</p>
<table>
    <tr>
        <th>
            @Html.DisplayNameFor(model => model.EmployeeID)
        </th>
        <th>
            @Html.DisplayNameFor(model => model.EmployeeName)
        </th>
<th>
            @Html.DisplayNameFor(model => model.Role)
        </th>
        <th></th>
    </tr>

@foreach (var item in Model) {
    <tr>
        <td>
            @Html.DisplayFor(modelItem => item.EmployeeID)
        </td>
        <td>
            @Html.DisplayFor(modelItem => item.EmployeeName)
        </td>

        <td>
            @Html.DisplayFor(modelItem => item.Role)
        </td>
        <td>
            @Html.ActionLink("Edit", "Edit", new { /* id=item.PrimaryKey */ }) |
            @Html.ActionLink("Details", "Details", new { /* id=item.PrimaryKey */ }) |
            @Html.ActionLink("Delete", "Delete", new { /* id=item.PrimaryKey */ })
        </td>
    </tr>
}

</table>