Вы можете извлечь строку html из объекта PartialViewResult, аналогично ответу на эту тему:
Визуализация представления в виде строки
PartialViewResult и ViewResult являются производными от ViewResultBase, поэтому один и тот же метод должен работать на обоих.
Используя код из ветки выше, вы сможете использовать:
public ActionResult ReturnSpecialJsonIfInvalid(AwesomenessModel model)
{
if (ModelState.IsValid)
{
if(Request.IsAjaxRequest())
return PartialView("NotEvil", model);
return View(model)
}
if(Request.IsAjaxRequest())
{
return Json(new { error = true, message = RenderViewToString(PartialView("Evil", model))});
}
return View(model);
}