Ваш лучший выбор, вероятно, состоит в том, чтобы отделить презентацию от данных. Это будет означать, что в вашем контроллере не будет кода представления (т.е. генерация HTML).
Есть 2 способа справиться с этим ...
Вложенные частичные представления
Частичные виды могут отображать ... другие частичные виды. Рассмотрим что-то вроде этого ...
<body> Page
-- <div> Partial View "parent" (does a RenderPartial of these:)
---- <div> Partial View "child" (piece 1) </div>
---- <div> Partial View "child" (piece 2) </div>
Родительское частичное представление просто содержит RenderPartials для дочерних элементов. Кроме того, у каждого внутреннего просмотра может быть свой собственный URL (/ controller / parent /, / controller / child-1 / и т. Д.). В jQuery, когда вы перехватываете событие, которое требует обновления пользовательского интерфейса, вы можете просто ajax.load нужную вам часть и вставить ее в div.
JSON -> jQuery Render
Другой способ - вы отказываетесь от сервера, создающего какой-либо код представления, и у вас просто есть API, который возвращает JSON. Затем jQuery принимает входящие объекты данных и выясняет, что с ними делать. В зависимости от сложности того, что нужно визуализировать на стороне клиента, это может быть проще. Это имеет преимущество в том, что он позволяет повторно использовать тот же код на стороне сервера другими способами. Недостатком является то, что контент не будет проиндексирован поисковыми системами.