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

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

<% 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, определяющие, какого рода и сколько логики разрешено в представлениях?

Ответы [ 5 ]

39 голосов
/ 14 января 2009

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

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

3 голосов
/ 15 января 2009

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

1 голос
/ 15 января 2009

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

1 голос
/ 15 января 2009

42.

Шучу: -)

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

1 голос
/ 14 января 2009

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

...