加载时显示消息,例如在 mvc 中加载或不再加载数据

Showing messages while loading, like loading or no more data in mvc

本文关键字:加载 mvc 数据 不再 显示 消息      更新时间:2023-09-26

我正在我的一个视图中实现无限滚动技术,它正在工作。 下面给出了我使用的脚本。

<script type="text/javascript">
  $(window).scroll(function () {
    if ($(window).scrollTop() == $(document).height() - $(window).height()) {
      GetArticlesFromNextSection(true);
    }
  });
  var i = 2;
  function GetArticlesFromNextSection(scrollPage) {
    var pagenumber = i++;
    $("#divLoading").show();
    setTimeout(function () {
      $.post('/Channel/MessagePagination', {
        "pagenumber": pagenumber,
      },
      function (data) {
        if (data == "") {
          $("#divLoading").html("No More Posts");
        }
        $("#messagelist").append(data);
        $("#divLoading").hide();
      });         
    }, 1000);
    i = i;
  }
</script>

现在,我需要在完全加载数据时显示一条消息,例如不再有数据或类似内容。我已经给出了一个 if 条件来检查

if (data == "") { $("#divLoading").html("No More Posts");}

但它不起作用。谁能告诉我会有什么问题?下面给出了视图和控制器示例代码

视图:

@Html.AntiForgeryToken()
<div>
  @Html.ValidationSummary(true)
  <div id="messagelist">
    @{Html.RenderPartial( "mypartial",list);}
  </div>
</div>
<div id="divLoading" style="margin: 0px; padding: 0px; position: fixed; right: 0px; top: 0px; width: 100%; height: 100%; background-color: #666666; z-index: 30001; opacity: .8; filter: alpha(opacity=70);display:none">
  <p style="position: absolute; top: 30%; left: 45%; color: White;">Loading, please wait...<img src="~/images/loading.png"></p>
</div>

控制器:

public ActionResult MessagePagination(int pagenumber)
{
  var balObject = new BusinessLogic();
  int pageSize = 3;
  var MessageList = balObject.FetchMessages();
  MessageList = MessageList.Skip((pagenumber - 1) * pageSize).Take(pageSize).ToList();
  return PartialView("mypartial", MessageList);
}

你可以这样检查:

if ($.trim(data)) {
$("#messagelist").append(data);
$("#divLoading").hide();
}
else
 $("#divLoading").html("No More Posts");

或者,您可以在修剪后使用length属性,如果它大于 0 数据来了,否则没有来(在这种情况下,如果您在没有更多数据时从服务器返回空字符串):

if ($.trim(data).length) {
    $("#messagelist").append(data);
    $("#divLoading").hide();
    }
    else
     $("#divLoading").html("No More Posts");

如果 msglist 计数为零,我将控制器更改为返回 null。我使用了一个警报框来显示消息,不再显示更多帖子。现在它正在工作。