“если” рассмотрено вредный в ASP.NET Представление MVC (.aspx) файлы?

Я не забываю видеть блог (или что-то), который сказал, что Вы не должны использовать <% если... %> в .aspx файлах в ASP.NET MVC, но я не могу помнить то, что он сказал, что альтернатива. Кто-либо может не забыть видеть это и указать на меня на него?

5
задан JoelFan 11 January 2010 в 13:20
поделиться

7 ответов

Я не уверен, что это то, что вы видели, но здесь - блог, в котором об этом упоминается. Смотрите пункт #11.

2
ответ дан 18 December 2019 в 06:50
поделиться

В основном то, что значит, что вы не должны иметь огромные, если выступления в ваших взглядах, ваши контроллеры и 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>
10
ответ дан 18 December 2019 в 06:50
поделиться

Я подозреваю, что точка была в попытке избежать кода спагетти, а не ограничить использование "if's, вот ссылка на блог Роба Конери об этом, он на самом деле упоминает использование помощников вместо Ifs, так что это может быть то, что вы видели ASP.NET MVC: Избегая Тэга Суп

-121--4565875-

Я не уверен, что это то, что вы видели, но здесь это блог, который упоминает об этом. См. пункт 11.

-121--4565870-

Я думаю, что вы имеете в виду пост Роба Конери , где он упоминает правило, которое он использует:

Если есть , если , сделайте помощник

Поэтому, чтобы ответить на ваш вопрос, идея заключается в том, что если вам нужно использовать , если в вашем представлении, вы должны рассмотреть возможность добавления метода расширения помощника для визуализации этой части вашего представления.

9
ответ дан 18 December 2019 в 06:50
поделиться

Как я думаю, лучший подход для этого пытается обрабатывать ваше состояние в контроллере и пройти конкретный вид для требуемого результата или пропустите имя просмотра в переменной для рендеринга.

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;
    }
}

Ну, Мартин ответ также из лучших практик.

2
ответ дан 18 December 2019 в 06:50
поделиться

Это проблема, имея в виду?

выражения связывания нельзя использовать в блоке оператора <%%>, как и Отчеты не могут быть использованы в блоке выражения связывания <% #%>

- bruce (sqlwork.com)

"Джейсон" <> написал в сообщении Новости: 23C11F83-A2AA-406D-BDEC -...

Что не так с следующим, если заявление на моей странице ASPX?

«Т» тогда%>

Я получаю сообщение об ошибке: BC30201: ожидается выражение.

Брюс Баркер

0
ответ дан 18 December 2019 в 06:50
поделиться

Я подозреваю, что точка была попытка избежать кода спагетти, а не ограничивать использование «если», вот ссылка на блог Conry Conroy, он фактически упоминает, используя помощники вместо IFS, так что это может быть то, что вы видели ASP.NET MVC: избегание тегового супа

0
ответ дан 18 December 2019 в 06:50
поделиться

Я чувствую, что это просто в порядке. Это позволяет просмотреть возможность иметь контроль над его презентацией.

0
ответ дан 18 December 2019 в 06:50
поделиться
Другие вопросы по тегам:

Похожие вопросы: