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字符串,类似回答这个线程:
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);
}
答
我更喜欢
return Json(new { Url = Url.Action("Evil", model) });
一个方法,那么你可以赶上结果在JavaScript并做类似
success: function(data) {
$.post(data.Url, function(partial) {
$('#IdOfDivToUpdate').html(partial);
});
}
omg render view to string!我从来不知道这一点。 O.O – 2012-04-06 20:23:34
如果它是一个调用ReturnSpecialJsonIfInvalid的ajax调用,我相信它会返回数据。 jquery如何将视图与json区分开来? – mko 2014-09-15 10:22:58