我有一個新的MVC項目,它使用實體框架。我現在正在吐出郵件(這是一個公告板樣式部分),現在取決於一些條件因素,表輸出中的行必須具有不同的類風格。
傳遞到頁面從控制器的模型是實體模型(調用消息,幷包含相同的字段數據庫)
我們獲得該行的風格在我做了以下內容,
<%
int i = 0;
foreach (var message in ViewData.Model.MessageList)
{
string className = "rowEven";
if (i % 2 == 0) { className = "rowOdd"; }
if (message.Deleted) { className = "deleted"; }
if (message.AuthorisedBy == null) { className = "notAuth"; }
if (message.Deleted) { className = "deleted"; }
%>
<tr class="<%=className%>">
<td><%= Html.CheckBox("mc1")%></td>
<td>
<%= Html.ActionLink(message.Title, "Details", new { id = message.MessageID })%>
</td>
<td>User Name Here</td>
<td><%= Html.Encode(message.PublishDateTime.ToString())%></td>
</tr>
<%
i++;
}
%>
這是非常醜陋的,必須有更好的方式做到這一點,有什麼建議?
只是想補充一點,你可以同時使用一個ViewModel和的HtmlHelper。一些東西(轉換數據)屬於ViewModel,一些東西(選擇特定的CSS類)屬於HTML助手。你甚至可能想要得到一個只有一個MessageItemViewModel並且只顯示一行的部分 - 這有助於你開始做Ajax的時候。 – 2009-10-06 10:23:22
我們有很多Ajax很快就會做,所以我喜歡你所說的話。你能提供一些參考或一些例子的鏈接嗎?我們對MVC非常陌生。 – LiamB 2009-10-06 10:35:01
這需要一些額外的努力,但切換視圖引擎可能會讓您更清楚地瞭解頁面內容。看看Spark View Engine:http://sparkviewengine.com/ – alexandrul 2009-10-06 12:23:07