Ответ 1
Вы можете извлечь строку 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);
}