如果在MVC View中声明问题

时间:2011-08-29 20:29:11

标签: asp.net-mvc-2

我正在尝试使用以下代码在表中显示数据行。如果表没有数据,我想要打印一条简单的消息。当有数据显示时,我的代码会按预期打印数据行,但当列表为空时,它会打印表格标题。如何摆脱标题并打印消息呢?

<fieldset>

    <legend>Department Membership</legend>
<% if(Model.departmentsDisplayCheck) {%>
<table>
    <tr>         
        <th>Name</th>
        <th>Type</th>
        <th>Age</th>
        <th>Gender</th>
        <th>Status</th>
    </tr>

<% foreach (var dep in Model.departmentsList){ %>

    <tr>
        <td><%: Html.ActionLink(dep.Name, "Details", "Department", new { id=dep.DepartmentID}, null) %></td>
        <td><%: dep.Type %></td>
        <td><%: dep.Age %></td>
        <td><%: dep.Gender.ToString() %></td>
        <td><%: dep.Status %></td>
    </tr>
<% } %>
<% } %>
<% else { %>
<p><%: "You are not currently a member of any Department." %></p>
<% } %>
</table>

</fieldset>

3 个答案:

答案 0 :(得分:3)

首先,这些检查不属于View。相反,你应该在你的控制器上有一个名为DisplayDepartmentList的属性,然后使用你的支票(以及可能出现的任何其他业务逻辑)来设置它。

然后你正在做这个检查..

<% if(Model.DisplayDepartmentList) 

答案 1 :(得分:2)

<% if(Model.departmentsList != null && Model.departmentsList.Count > 0) {%>

答案 2 :(得分:1)

你确定模型是空的而不仅仅是空的吗?如果它变回空,那么你就会得到观察到的行为。

尝试将其更改为

<% if(Model.departmentsList != null || Model.departmentList.Count == 0) {%>