ddd*_*ddd 7 asp.net-mvc refactoring partial-views
我知道视图中不应该包含代码,但在我正在处理的项目中,我在视图中有很多逻辑.
我的主页有
<% Html.RenderPartial("SearchResults"); %>
Run Code Online (Sandbox Code Playgroud)
现在在局部视图中,我有很多这样的逻辑;
<div id="RestaurantsList">
<%if (Model.restaurantsList.Count() > 0)
{
foreach (var item in Model.restaurantsList)
{ %>
<% Html.RenderPartial("SearchResult", item); %>
<%
} %>
<%
}
else
{
Html.RenderPartial("NoResults");
} %>
Run Code Online (Sandbox Code Playgroud)
现在我可以让家庭控制器返回一个基于列表为空的不同视图,但我真的不想这样,因为索引视图有一些我想要显示的东西,无论是否有结果.
我能想到的另一件事就是将它封装在一个辅助方法中,比如Html.SearchResults.但是我需要帮助器来为每个搜索结果调用renderPartial.这似乎不是关心的干净分离.
我仍然需要在局部视图中使用第一个if语句.
你最好怎么处理这个?
TWi*_*ars 10
我同意Praveen Angyan的回答.我唯一可以说的是扩展他的答案是将一些逻辑放在ViewModel中.
例如,在ViewModel中,您可以隐藏
Model.restaurantsList.Count() > 0
方法或财产背后.
例如:
<%if (Model.HasResturant){...}%>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1191 次 |
| 最近记录: |