2011-08-29 40 views
1

我想用下面的代碼顯示錶中的數據行。如果表中沒有數據,我想要打印一條簡單的消息。當有數據要顯示時,我的代碼確實打印了預期的數據行,但當列表爲空時,它會打印表格標題。我怎樣才能擺脫標題並打印信息呢?如果在MVC中的語句問題查看

<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

首先這類檢查在視圖中不屬於。相反,您應該在控制器上擁有一個名爲DisplayDepartmentList的屬性,然後使用您的支票(以及可能出現的任何其他業務邏輯)對其進行設置。

然後代替你在做這個檢查..

<% if(Model.DisplayDepartmentList) 
+0

+1,這是最好和最正確的答案。使用視圖模型而不是spaghetifying你的意見(在你的意見中寫意大利麪代碼的過程)。 –

+0

感謝您的提示。這是我的第一個項目,任何有關改進我的代碼的信息都非常感謝。我做了你的建議,但我仍然無法讓信息出現在桌子上。我應該爲每種情況使用不同的視圖模型嗎? – Tsarl

+0

@Darin - 這與我的回答有什麼不同?你仍然需要做檢查。你將有相同數量的代碼,只是一個更小的if語句(但更多的控制器代碼)... – Martin

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

感謝您的回答。標題現在消失了,但消息仍未打印。我用這個,因爲我得到一個錯誤:<%if(Model.departmentsList!= null && Model.departmentsList.Count()> 0){%> – Tsarl

1

確定,該模型爲空,而不只是空的?如果它恢復空洞,那麼你會得到觀察到的行爲。

嘗試將其更改爲

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

感謝您的答案。與OR語句沒有區別。標題仍然顯示。 – Tsarl