MVC Return Partial View as JSON
You can extract the html string from the PartialViewResult object, similar to the answer to this thread:
PartialViewResult and ViewResult both derive from ViewResultBase, so the same method should work on both.
Using the code from the thread above, you would be able to use:
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);}
Instead of RenderViewToString
I prefer a approach like
return Json(new { Url = Url.Action("Evil", model) });
then you can catch the result in your javascript and do something like
success: function(data) { $.post(data.Url, function(partial) { $('#IdOfDivToUpdate').html(partial); });}