在运行时,您可以对控制器操作执行 ajax 获取,该操作会将视图呈现为字符串,然后可以将其插入/附加到 DOM 中。
创建一个返回 JSON 的新操作结果,如下所示:
return new JsonResult
{
JsonRequestBehavior = JsonRequestBehavior.AllowGet,
Data = new { html = this.RenderPartialViewToString("YourPartialView", model) }
};
注意,上面使用了以下控制器扩展:
public static string RenderPartialViewToString(this Controller controller, string viewName = null, object model = null)
{
if (string.IsNullOrEmpty(viewName))
{
viewName = controller.ControllerContext.RouteData.GetRequiredString("action");
}
controller.ViewData.Model = model;
using (var sw = new StringWriter())
{
ViewEngineResult viewResult = ViewEngines.Engines.FindPartialView(controller.ControllerContext, viewName);
var viewContext = new ViewContext(controller.ControllerContext, viewResult.View, controller.ViewData, controller.TempData, sw);
viewResult.View.Render(viewContext, sw);
return sw.GetStringBuilder().ToString();
}
}
有关此扩展方法的进一步阅读:http://craftycodeblog.com/2010/05/15/asp-net-mvc-render-partial-view-to-string/
剩下的就是执行一个 get 传递一个参数来表示要渲染的项目数量并将返回的内容附加到您的视图中。可能是这样的:
$.getJSON('url', numberofitems, function (data) {
$('#somecontainer').html(data.html);
});