Вот интересный кусок кода, который, кажется, выполняет то, что я хочу, и сохраняет привязку модели к тому, что я могу сказать.
protected string RenderPartialViewToString(string viewName, object model)
{
controller.ViewData.Model = model;
using (StringWriter sw = new StringWriter())
{
ViewEngineResult viewResult = ViewEngines.Engines.FindPartialView(controller.ControllerContext, viewName);
ViewContext viewContext = new ViewContext(controller.ControllerContext, viewResult.View, controller.ViewData, controller.TempData, sw);
viewResult.View.Render(viewContext, sw);
return sw.GetStringBuilder().ToString();
}
}
Работает как шарм. Я просто использую это и передаю строку в качестве параметра JSON, а затем на клиенте читаю параметр и помещаю его в соответствующий контейнер. Я очень рад, что это работает.