MVC Return Partial View as JSON MVC Return Partial View as JSON ajax ajax

MVC Return Partial View as JSON


You can extract the html string from the PartialViewResult object, similar to the answer to this thread:

Render a view as a string

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);    });}