実行時に、ビューを文字列としてレンダリングするコントローラ アクションに対して ajax get を実行し、それを 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);
});