MVC返回部分视图为JSON

问题描述:

有没有办法从MVC返回一个HTML字符串作为JSON响应的一部分?MVC返回部分视图为JSON

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 = PartialView("Evil",model)}); 
     } 
     return View(model); 
    } 

您可以从中提取PartialViewResult对象中的HTML字符串,类似回答这个线程:

Render a view as a string

PartialViewResult和的ViewResult无论从ViewResultBase派生,所以同样的方法应该从事的都。

从上面的线程使用的代码,你将能够使用:与其RenderViewToString

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

omg render view to string!我从来不知道这一点。 O.O – 2012-04-06 20:23:34

+0

如果它是一个调用ReturnSpecialJsonIfInvalid的ajax调用,我相信它会返回数据。 jquery如何将视图与json区分开来? – mko 2014-09-15 10:22:58

我更喜欢

return Json(new { Url = Url.Action("Evil", model) }); 

一个方法,那么你可以赶上结果在JavaScript并做类似

success: function(data) { 
    $.post(data.Url, function(partial) { 
     $('#IdOfDivToUpdate').html(partial); 
    }); 
}