Я бы рекомендовал использовать модель-вид-вид-модель здесь. Это позволяет вам инкапсулировать большую часть вашей логики в классе модели представления, тогда вы просто вызываете методы в своей модели представления, а не помещаете свою логику в линию. это бы выглядело примерно так ...
<% foreach (var messageViewModel in ViewData.Model.MessageList) { %>
<tr class="<%=message.RowClass%>">
<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.PublishedAt)%></td>
</tr>
<% } %>
Хотя у вас гораздо больше классов, вы получаете намного более читаемую разметку, и ваше приложение гораздо более тестируемо. Он превращает ваш вид в очень простое окно на вашу модель вида. Затем модель представления инкапсулирует любую логику и свойства, которые необходимы исключительно представлению.
В ответ на ваш комментарий здесь - статья, в которой рассматривается модель модели - представление - просмотр модели в MVC. Вам просто нужно создать класс с кучей свойств и / или методов и заполнить этот класс всем, что вам нужно. Затем передайте класс вашему представлению вместо того, чтобы передавать модель напрямую. Вы даже можете использовать AutoMapper или другую инфраструктуру сопоставления для автоматического сопоставления ваших моделей с вашими моделями представления.