Я не забываю видеть блог (или что-то), который сказал, что Вы не должны использовать <% если... %> в .aspx файлах в ASP.NET MVC, но я не могу помнить то, что он сказал, что альтернатива. Кто-либо может не забыть видеть это и указать на меня на него?
Я не уверен, что это то, что вы видели, но здесь - блог, в котором об этом упоминается. Смотрите пункт #11.
В основном то, что значит, что вы не должны иметь огромные, если выступления в ваших взглядах, ваши контроллеры и ViewModels должны иметь возможность обрабатывать логику. Пример:
<h2 class="title">
<% if (ViewData["category"] == null { %>
All Products
<% } else { % >
<%= ViewData["category"] %>
<% } %>
</h2>
Должно быть:
<h2 class="title>
<%= Model.Title %>
</h2>
Если ваши контроллеры и ViewModels не могут обрабатывать логику, вы должны написать HTML-помощники для более сложной логики (что делает его многоразовым и читаемым).
<h2 class="title>
<%= Html.GetPageTitle(Model.Category) %>
</h2>
Я подозреваю, что точка была в попытке избежать кода спагетти, а не ограничить использование "if's, вот ссылка на блог Роба Конери об этом, он на самом деле упоминает использование помощников вместо Ifs, так что это может быть то, что вы видели ASP.NET MVC: Избегая Тэга Суп
-121--4565875-Я не уверен, что это то, что вы видели, но здесь это блог, который упоминает об этом. См. пункт 11.
-121--4565870-Я думаю, что вы имеете в виду пост Роба Конери , где он упоминает правило, которое он использует:
Если есть
, если
, сделайте помощник
Поэтому, чтобы ответить на ваш вопрос, идея заключается в том, что если вам нужно использовать , если
в вашем представлении, вы должны рассмотреть возможность добавления метода расширения помощника для визуализации этой части вашего представления.
Как я думаю, лучший подход для этого пытается обрабатывать ваше состояние в контроллере и пройти конкретный вид для требуемого результата или пропустите имя просмотра в переменной для рендеринга.
public class HomeController :Controller
{
public ActionResult Category(string? category)
{
View viewToReturn;
if (category == null)
viewToReturn = View("CategoryList", repo.GetAllCategory); /// it is a View
else
viewToReturn = View("Category", repo.GetCategory(category)); /// it is a View
return viewToReturn;
}
}
Ну, Мартин ответ также из лучших практик.
Это проблема, имея в виду?
выражения связывания нельзя использовать в блоке оператора <%%>, как и Отчеты не могут быть использованы в блоке выражения связывания <% #%>
- bruce (sqlwork.com)
"Джейсон" <> написал в сообщении Новости: 23C11F83-A2AA-406D-BDEC -...
Что не так с следующим, если заявление на моей странице ASPX?
«Т» тогда%>Я получаю сообщение об ошибке: BC30201: ожидается выражение.
Брюс Баркер
Я подозреваю, что точка была попытка избежать кода спагетти, а не ограничивать использование «если», вот ссылка на блог Conry Conroy, он фактически упоминает, используя помощники вместо IFS, так что это может быть то, что вы видели ASP.NET MVC: избегание тегового супа
Я чувствую, что это просто в порядке. Это позволяет просмотреть возможность иметь контроль над его презентацией.