Подтвердить что ты не робот

Сколько логики разрешено в представлениях ASP.NET MVC?

При просмотре образцов ASP.NET-сайтов MVC я вижу довольно много примеров со встроенной логикой в ​​представлениях, например:

<% if (customerIsAllowed)
   { %>

   <p>nnn</p>
   <p>nnn</p>
   <p>nnn</p>
   <p>nnn</p>
   <p>nnn</p>

<% }  else {%>

   <p>nnn</p>
   <p>nnn</p>
   <p>nnn</p>
   <p>nnn</p>
   <p>nnn</p>

<% } %>

Хотя мне это кажется неправильным, так как это то, о чем мы пытались уйти в ASP 3.0, я даже слышал в некоторых подкастах, что "немного логики в порядке", поскольку остальные структура MVC заботится о структуре, которой у нас не было в ASP 3.0.

Существуют ли какие-либо соглашения MVC о том, какой тип и сколько логики разрешено в представлениях?

4b9b3361

Ответ 1

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

Я думаю об этом как о прагматичном балансе между идеализированным MVC и строгим применением DRY (не повторяйте себя). В некоторых ситуациях разумнее нарушать одно или другое, если вы не можете достичь обоих легко. В случае, когда четкость модели и базового представления одинаковы, нужно немного логически взглянуть на то, чтобы ваши взгляды DRY были разумными.

Ответ 2

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

Ответ 3

Вот еще один способ подумать об этом. В представлении отображается логика представления. Логика обработки данных поступает в контроллер, и валидация данных идет в модели. Но то, что должно в конечном итоге быть руководством, а не религией:)

Ответ 4

42.

Просто шучу: -)

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

Ответ 5

Пока логика в представлении предназначена для презентации (вы можете поместить ее в код за файлом, если вам не нравится в файле разметки), тогда это нормально. В вашем примере код/​​логика - это выбор определенной части обзора, которая в порядке. Презентации разрешено иметь логику, которая не должна быть просто HTML.