我知道视图中不应包含代码,但在我正在处理的项目中,视图中有很多逻辑。
我的主页有
<% 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 语句。
你会如何最好地处理这个问题?