【问题标题】:Asp.Net MVC Editor Template and Infinite ScrollingAsp.Net MVC 编辑器模板和无限滚动
【发布时间】:2023-03-10 04:05:02
【问题描述】:

我有以下表格数据的编辑器模板作为 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]));
}

阿贾克斯:

$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();
                },
});

即使我能够附加在发布时获得先前选择的项目和新项目的可能性有多大。请指导我。

【问题讨论】:

    标签: c# ajax asp.net-mvc editorfor


    【解决方案1】:

    我看到您提供的代码的唯一问题是您试图将部分视图返回为 JSON。删除对Json 的调用,然后返回PartialView(...)。那么,你应该是金色的。

    就不返回重复项而言,您需要将其视为实际的寻呼机。无限滚动不只是返回 10 个新的随机项目,它们在不使用分页链接的情况下分页数据。因此,当您发送 AJAX 请求时,您需要传递您所在的当前“页面”,并使用它来确定如何对返回的数据进行切分。您可以使用SkipTake 等LINQ 助手轻松手动完成,但您可能会发现使用PagedList 等第三方库更容易。这取决于你。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-05-14
      • 1970-01-01
      • 2023-03-13
      • 1970-01-01
      • 2012-01-06
      相关资源
      最近更新 更多