ビューにコードを含めるべきではないことは承知していますが、私が取り組んでいるプロジェクトでは、ビューに多くのロジックがあります。
私のホームページには
<% 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");
} %>
これで、空のリストに基づいてホームコントローラーが別のビューを返すようにすることができましたが、インデックスビューには、結果があるかどうかに関係なく表示したいものがいくつかあるため、実際には望んでいません。
ここで他に考えられる唯一の方法は、これを Html.SearchResults のようなヘルパー メソッドにカプセル化することです。しかし、検索結果ごとに renderPartial を呼び出すヘルパーも必要です。それは懸念の明確な分離のようには見えません。
ただし、部分ビューに最初の if ステートメントが必要です。
これをどのように処理するのが最善ですか?