Я знаю, что в представлениях не должно быть кода, но в проекте, над которым я работаю, в представлениях много логики.
Моя домашняя страница имеет
<% Html.RenderPartial("SearchResults"); %>
Теперь в частичном представлении у меня ужасная логика, подобная этой;
<div id="RestaurantsList">
<%if (Model.restaurantsList.Count() > 0)
{
foreach (var item in Model.restaurantsList)
{ %>
<% Html.RenderPartial("SearchResult", item); %>
<%
} %>
<%
}
else
{
Html.RenderPartial("NoResults");
} %>
Теперь я мог бы заставить домашний контроллер возвращать другое представление, основываясь на том, что список пуст, но я действительно не хочу, чтобы в представлении «Индекс» отображалось несколько вещей, которые я хочу отображать независимо от того, есть результаты или нет. 1011 *
Единственное, о чем я могу здесь подумать, - это инкапсулировать это во вспомогательный метод, такой как Html.SearchResults. Но тогда мне понадобится помощник для вызова renderPartial для каждого результата поиска. Это не похоже на чистое разделение проблем.
Мне все равно придется иметь первое выражение if в частичном представлении.
Как бы вы лучше всего справились с этим?