下面是表数据的编辑器模板,作为MyProjectViewModel.cshtml
<div>
<div>
@Html.CheckBoxFor(model => model.Selected)
</div>
<div>
for (int i = 1; i < @Model.TypeList.Count; i++)
{
<p id="@Model.TypeList[i].ID" >@Model.TypeList[i].Name</p>
}
</div>
@Html.HiddenFor(model => model.ID)
@Html.HiddenFor(model => model.Name)
</div>
我还有另一个视图,它用于发布所选的项,其中有以下语句来呈现编辑器模板。
<div id="loadDynamic">
@Html.EditorFor(model => model.NewItem)
</div>
如果我张贴,我可以得到选定的项目。
但是,现在我遇到了一个问题,因为这些数据必须在单击按钮时动态呈现。Onload我将填充前10项并使用编辑器模板显示。
但是,我被困住了,如何使用Ajax获得接下来的10个数据,并将其作为上述编辑器模板的一部分。
我已经创建了下面的Action和Ajax,但是它似乎不是合适的。
操作:
public ActionResult InfinateScroll(string lastID, string prjID)
{
//Querying DB to get List<Model>
//Not sure how to get the Editor Template here
// Tried with following, though it is not the one I needed
return Json(PartialView("~/Views/MyView/EditorTemplates/MyProjectViewModel.cshtml", model[0]));
}
Ajax:
$a.ajax({
type: "POST",
url: '@Url.Action("InfinateScroll", "Project")',
data: values,
traditional: true,
dataType: 'html',
cache: false,
success: function (data) {
$("#loadDynamic").append(data);
$("#loadingDiv").hide();
},
});
在这里,即使我能够附加,我有多大的可能性,我将获得之前选择的项目和新的项目,同时张贴。请引导我。
发布于 2014-07-08 06:48:44
我在您提供的代码中看到的唯一问题是,您试图以JSON的形式返回部分视图。删除对Json
的调用,然后返回PartialView(...)
。那么,你应该是黄金。
如果不返回副本,则需要将其视为实际的寻呼机。无限滚动不只是返回10个新的随机项目,他们页数据不使用分页链接。因此,当您发送AJAX请求时,您需要传递当前的“页面”,并使用它来决定如何为返回的数据进行骰子。使用像Skip
和Take
这样的LINQ帮助程序,您可以很容易地手动完成它,但是您可能会发现使用第三方库(如PagedList )更容易。由你决定。
https://stackoverflow.com/questions/24633716
复制