Мы собираемся разбить наши контроллеры: действия, которые возвращают полустатические HTML-страницы, действия, которые возвращают JSON ViewModels, и, наконец, действия, которые публикуют изменения. Мы планируем использовать JSON.NET для выполнения сериализации JSON, поскольку он поддерживает элегантный LINQ-подобный синтаксис для создания сложных объектов JSON. Мы будем использовать jQuery + AJAX для вызова действий JSON и использовать результаты для замены элементов в HTML.
Раньше мы передавали ViewModels методу View () и использовали его с Razor для заполнения экранов. Так что большая разница в том, что наши модели представлений будут объектами JSON, а страницы будут создаваться с помощью JavaScript. Проблема с синтаксисом Razor заключалась в том, что он действовал как опора. Много раз мы искали Razor и JavaScript (Франкенштейн). Кроме того, несколько страниц занимают достаточно много времени для загрузки, так что в любом случае требуется какая-то предварительная обратная связь (загрузка ...).
К вопросу: я просматривал свой код и заметил, что многие ViewModels имеют общие свойства. Кроме того, та же логика появляется на нескольких контроллерах. Мне было интересно, какие шаблоны / инструменты существуют для размещения этой логики в одном месте. Кроме того, я должен пытаться создать «мастер» ViewModel с дочерними ViewModels (с другими дочерними ViewModels и так далее)? Идея состоит в том, что некоторые элементы являются общими для всех страниц (например, содержимое верхнего и нижнего колонтитула), и поэтому представляется целесообразным иметь общую структуру ViewModel для каждой страницы. Таким образом, я могу повторно использовать JavaScript для поиска данных и установки их в HTML. Я полагаю, что если страница не использует дочернюю ViewModel, я просто передал бы null, чтобы он не занимал слишком много места.
Я хочу убедиться, что я все понял правильно, прежде чем я начну идти по этому новому пути. Я видел приложения, которые раньше использовали иерархию ViewModels, и видел проблемы из-за этого. Я также хочу уменьшить количество вызовов AJAX, поэтому я хочу вернуть как можно больше данных при минимальном количестве вызовов. Это своего рода противоречивые требования. Я надеялся, что у кого-то есть опыт создания множества моделей ViewModel и преобразования их в объекты JSON для использования на стороне клиента. Мне также было любопытно, если бы кто-нибудь нашел какие-либо инструменты для JavaScript для создания страниц из ViewModels. Сейчас мы смотрим на backbone.js, но, похоже, он ориентирован не на генерацию общего контента, а на формы.