使用asp.net mvc 2.0列出数据库中的所有数据

时间:2012-07-26 12:35:02

标签: asp.net-mvc-2

我是asp.net mvc 2.0的新手。我有一个关于使用asp.net mvc列出数据库数据的问题。

控制器

public ActionResult ListEmployee() {
       UserModels emp = new UserModels();
        emp.EmployeeList = (List<tblEmployee_Employee>)Session["list"];
        return View(emp);
}

模型

 public class GetEmployee
{
    public string name { get; set; }
    public string sex { get; set; }
    public string email { get; set; }
}   

我有查看页面employee.aspx页面,但我不知道如何在此视图页面中编写代码。

请帮我解决这个问题。

谢谢,

1 个答案:

答案 0 :(得分:0)

在ASP.NET MVC视图中,需要对传递给它们的模型进行强类型化。因此,在您的情况下,您将UserModels实例传递给您的视图。假设您已经拥有一个母版页,并且您希望在表格中显示您可能具有以下内容的员工列表:

<%@ Page 
    Language="C#" 
    MasterPageFile="~/Views/Shared/Site.Master" 
    Inherits="System.Web.Mvc.ViewPage<AppName.Models.UserModels>" 
%>

<asp:Content ID="Content2" ContentPlaceHolderID="MainContent" runat="server">
    <table>
        <thead>
            <tr>
                <th>Name</th>
                <th>Sex</th>
                <th>Email</th>
            </tr>
        </thead>
        <tbody>
            <% foreach (var employee in Model.EmployeeList) { %>
            <tr>
                <td><%= Html.Encode(employee.name) %></td>
                <td><%= Html.Encode(employee.sex) %></td>
                <td><%= Html.Encode(employee.email) %></td>
            </tr>
            <% } %>
        </tbody>
    </table>
</asp:Content>

甚至更好,定义一个可重复使用的显示模板,该模板将自动为EmployeeList集合属性(~/Views/Shared/DisplayTemplates/GetEmployee.ascx)的每个项目呈现:

<%@ Control 
    Language="C#" 
    Inherits="System.Web.Mvc.ViewUserControl<dynamic>" 
%>

<tr>
    <td><%= Html.DisplayFor(x => x.name) %></td>
    <td><%= Html.DisplayFor(x => x.sex) %></td>
    <td><%= Html.DisplayFor(x => x.email) %></td>
</tr>

然后在主视图中引用此模板:

<%@ Page 
    Language="C#" 
    MasterPageFile="~/Views/Shared/Site.Master" 
    Inherits="System.Web.Mvc.ViewPage<AppName.Models.UserModels>" 
%>

<asp:Content ID="Content2" ContentPlaceHolderID="MainContent" runat="server">
    <table>
        <thead>
            <tr>
                <th>Name</th>
                <th>Sex</th>
                <th>Email</th>
            </tr>
        </thead>
        <tbody>
            <%= Html.EditorFor(x => x.EmployeeList)
        </tbody>
    </table>
</asp:Content>

现在您不再需要任何foreach循环(因为如果属性是遵循标准命名约定的集合属性,ASP.NET MVC将自动呈现显示模板),并且您还有一个可重复使用的模型显示模板