自动加载报废网页的下一页/首页的最佳方法

时间:2017-09-16 07:04:54

标签: c# mvvm uwp template10

情况:我制作代码来废弃网页。它基于模板10并使用MVVM和HTML Agility Pack的UWP应用程序。被抓取的页面是我可以向前移动的结果(页面)列表,返回到源网页的结果列表中。所有内容都被删除,即用于处理此类列表的Web结果和Web命令列表。

请求:我想删除“上一页”和“下一页”按钮。如果我移动到顶部或底部当前加载的结果列表(网页),一个想法需要自动发送加载页面或后退页面的请求。

注意:当我在View中列表的顶部或底部时,我能够显示一条消息。我觉得有一种更好的方法可以在ViewModel中加载列表的上一页和下一页。

如果有任何建议,我将不胜感激。 所有的道路都通往罗马,请告诉我最好的方式。提前感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

  

当我在View中列表的顶部或底部时,我能够显示一条消息。

如果您可以在列表位于顶部或底部时收到消息,则可以将全局变量定义为请求的地址,并将变量声明为页面索引。例如:http://www.test.com?page= {0}

然后,当您收到“top”或“bottom”消息时,您可以将HTTP请求发送到该地址并获取其返回的内容。

private int pageIndex = 0;
private string address = @"http://www.test.com?page={0}";

private async void GetPreviousPageContent()
{
    pageIndex--;
    Uri uri = new Uri(string.Format(address,pageIndex));
    HttpClient client = new HttpClient();
    var response = await client.GetAsync(uri);
}

private async void GetNextPageContent()
{
    pageIndex++;
    Uri uri = new Uri(string.Format(address, pageIndex));
    HttpClient client = new HttpClient();
    var response = await client.GetAsync(uri);
}

在这里,我有另一个建议。您可以为listview实现两个函数。 Pull to refreshISupportIncrementalLoading。当列表视图滚动到顶部并将其拉下时,它将触发特定事件,在这种情况下,您可以发送HTTP请求以获取上一页的内容。当列表视图滚动到底部时,将触发ISupportIncrementalLoading的LoadMoreItemsAsync方法,在此方法中,您可以获取下一页的内容。这样,您仍然需要声明两个变量作为请求地址和页面索引。