我是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页面,但我不知道如何在此视图页面中编写代码。
请帮我解决这个问题。
谢谢,
答案 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将自动呈现显示模板),并且您还有一个可重复使用的模型显示模板