2010-06-20 2 views
2

Из ограниченного количества людей, о которых я говорил в отношении веб-фреймворков MVC, я слышал, как люди говорят, что, забыв о формах, файл представления должен в идеале содержать разметку HTML, манипуляцию строк и несколько циклов for each. Мне также сказали, что if заявления во взглядах следует избегать, если это вообще возможно. Согласен ли это?Что не должно быть в представлении MVC?

EDIT: Ситуация, которая вдохновила на этот вопрос пишет навигации, я окажусь писать:

if secondary_navigation_item has children 
    ... 

Я думаю, в идеале, ли это как логики (этого не должно быть здесь)?

+0

Хотелось бы, чтобы я изменил этот вопрос на «то, что является хорошим ресурсом для определения архитектуры MVC» –

ответ

2

Вид в основном должна содержать:

  • HTML Markup
  • Javascript
  • CSS
  • Минимум серверного кода вам может понадобиться поместить в поле зрения

Итак, В представлении обычно должны быть элементы макета. Основная логика обработки должна идти в контроллере.

Дополнительная информация:

http://en.wikipedia.org/wiki/Model%E2%80%93view%E2%80%93controller

+0

Возможно, мне не хватает вашей точки здесь, кроме Javascript? CSS? Strewth, я не делаю этого в своих статических HTML-проектах. Я бы вряд ли сказал, что это была лучшая практика imo. Хотя у него есть свое место. –

+0

Я согласен с Сарфразом.Его вполне приемлемо для цикла через массив, используйте «if», чтобы определить, какое изображение отображать и т. Д. Постарайтесь свести код к минимуму и, конечно же, не выполняйте проверку/обработку/etc в своих представлениях. –

+0

@ yaya3: О, да. Я использую Javascript, CSS и jQuery в своих представлениях все время. Но это код на стороне клиента, а не код на стороне сервера. –

4

Вообще говоря, View не должен содержать какую-либо бизнес-логику на сторону сервера. Но он все еще может содержать логику, которая непосредственно относится к визуализации представления.

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

+0

Если вы обнаружите, что много логики написано в виде вложенных ifs в представлении, вы должны подумать о том, является ли ваш структурный дизайн здоровым. –

4

Сказать, что ваши взгляды не должны содержать условную логику, это просто глупо. Как еще вы могли бы генерировать элементы пользовательского интерфейса, такие как значки «нового сообщения» или флэш-сообщения — использовать другой шаблон представления для каждого возможного состояния интерфейса? Это похоже на то, что ваш контроллер не должен содержать назначений переменных, потому что манипуляция данными принадлежит модели.

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

Каждое правило имеет исключение, и есть случаи, когда вы бы выполняли строковое манипулирование в контроллере или даже реализовали поток приложения в представлении. Иногда вам просто нужно оценивать его в каждом конкретном случае и применять немного здравого смысла.

Смежные вопросы