MVC以JSONforms返回部分视图

有没有办法返回一个HTMLstring作为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对象中提取htmlstring,类似于此线程的答案:

以stringforms呈现视图

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

我更喜欢一种像RenderViewToString这样的方法

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

那么你可以捕捉你的JavaScript的结果,并做类似的事情

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