У меня есть представление, состоящее из верхних, левых и нижних заголовков и основной области содержимого. Предположим, что во время запроса AJAX мне нужно обновить HTML верхней, нижней и основной панелей (левый заголовок должен оставаться неизменным).
Мне было интересно, что было бы лучшим способом добиться этого. Первая мысль заключалась в том, чтобы положить основную панель содержимого в частичную и иметь действие контроллера, которое вернет PartialView. Это не сработает, потому что поскольку действие возвращает только HTML главной панели, я не могу обновить верхний и нижний заголовки.
Итак, если я поместил верхние и нижние заголовки в свои собственные частичные представления, мне понадобится мое действие контроллера, чтобы вернуть несколько частичных представлений. Возможно ли это вообще, или я делаю что-то совершенно не так?
Я видел, что можно отобразить частичное представление строки, поэтому я подумал, что могу использовать эту технику в действии, чтобы вернуть объект JSON с 3 свойствами, представляющими HTML из 3 частичных элементов, которые мне нужно обновить. Но это похоже на очень неправильный подход ко мне, если это возможно вообще.
Еще одна идея, которую я получил, - вернуть объект JSON, содержащий только данные, необходимые для частичных, и использовать javascript для построения HTML. Но создание пользовательского интерфейса в javascript выглядит сложной задачей (основное содержимое частично использует MvcContrib GridView с поиском и сортировкой).
Поэтому я был бы очень признателен за предложения о том, какой был бы самый чистый подход для обработки такого сценария. Также было бы удобно адаптивное решение: например, если пользователь имеет javascript отключил бы, просто перезагрузив всю страницу без AJAX.
UPDATE:
Andrew Siemer предложил разместить каждый раздел в своем собственном частичном представлении и выполнить несколько запросов ajax. Это похоже на совершенно правильный подход, но, к сожалению, он не применим в моем сценарии из-за следующей детали, которую я пропустил в своем первоначальном описании проблемы: верхний заголовок фактически используется для отображения сообщений об ошибках/информации о событиях, происходящих на главной панели. Так, например, мне нужно показать сообщение об ошибке в случае возникновения исключения при извлечении модели для главной панели. Таким образом, только один запрос может быть сделан для обновления этих двух панелей.