2012-01-09 2 views
2

Мне было интересно, должен ли я использовать JavaScriptResult? Я прочитал пару статей об этом, и у людей есть противоречивые мнения.Использование JavaScriptResult в моем коде

Я вижу преимущество:

  1. код визуализируются в контроллере, и поэтому я могу взаимодействовать со своими источниками данных и более сложным расчетом и логикой.
  2. Но JS, созданный на основе страницы с использованием вынесенного jasonresult, кажется лучшим выбором.

Не уверен, что о программировании шаблона:

Как JavaScript рендеринга в контроллере вписывается Model View Controller

ответ

1

MVC является шаблон, который все о разделении концерна. Я часто слышу, что JavaScriptResult - это то, чего следует избегать, поскольку он нарушает этот принцип. На мой взгляд, вы должны помнить, что MVC дает вам мощные инструменты, но это зависит от вас, что вы будете с ними делать. JavaScript XHR/Ajax может предоставить больше, чем только рендеринг графического интерфейса, но его следует использовать с учетом. Ну, на самом деле можно пропустить даже самые простые методы, но это не значит, что мы не должны их использовать :)

Конечно, использование JavaScript на вашей странице и подача его с помощью JSON совершенно прекрасная и прецедентная, в большинстве случаев этого достаточно. Иногда, однако, вам нужно будет выбрать, что вы хотите быть на 100% совместимым с шаблоном MVC или принципом DRY/другими хорошими практиками. Я думаю, что лучше всего делать то, что, по вашему мнению, имеет смысл в конкретной ситуации.

Возьмем метод GetContainerUpdateScript помощника WebGrid http://msdn.microsoft.com/en-us/library/system.web.helpers.webgrid.getcontainerupdatescript(v=vs.99).aspx, он поставляет jquery oneliner для обновления данных webgrid. В этом случае это все в представлении, но подобный код может быть частью контроллера - скажем, сценарий, который создает кучу POST-запросов на основе некоторого уникального идентификатора (например, sessionID-like).

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

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