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