Вы что-то не упускаете (если я не слишком), и я думаю, что это ошибка. У меня такая же проблема в ASP.NET MVC3.
У нас есть действие контроллера, которое возвращает контент из простой системы управления контентом. CMS позволяет пользователю определять тип содержимого возвращаемого содержимого (например, text / plain или text / xml).
Действие контроллера либо вызывается напрямую, либо вызывается как дочернее действие, чтобы позволить представлению содержать управляемые элементы содержимого.
Если часть содержимого создается с типом содержимого «text / plain», и это встроено в представление ASP.NET MVC, тип содержимого родительского элемента переопределяется, и браузер отображает HTML.
Гейб, я думаю, ты ударил ногтем по голове в том смысле, что, похоже, не существует сценария, когда действие ребенка, перекрывающее родителя, является желательным результатом.
Мое решение состоит в том, чтобы перейти на ControllerContext.IsChildAction
и создать свой собственный возвращаемый объект, но, по моему мнению, это то, что должно обрабатываться фреймворком.
Я уверен, что вы знаете об этом, но в вашем случае я бы предложил явно установить JsonResult.ContentType
для типа содержимого родительского элемента.