0

我是 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 页面,但我不知道如何在此视图页面中编写代码。

请帮我解决这个问题。

谢谢,

4

1 回答 1

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 将自动呈现显示模板)并且您的模型具有可重用的显示模板。

于 2012-07-26T12:39:05.430 回答