2017-09-16 23 views
0

情况:我制作代码以废弃网页。它基于模板10并使用MVVM和HTML Agility Pack的UWP应用程序。抓取的页面是我可以前进的结果(页面)列表,返回到源网页上的结果列表中。全部被刮掉,即,处理这样的列表的web结果和web命令的列表。自动加载报废网页的下一页/预设页面的最佳方法

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

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

我将不胜感激任何建议如何做到这一点。 所有的道路通往罗马,请告诉我最好的方法。提前感谢您的帮助。

+1

通过'废料'你的意思是'刮'和'报废'你的意思是'刮'吗? – mjwills

+0

请退后一步并解释您尝试解决的潜在问题。换句话说,**为什么**你是否在抓取网页? – mjwills

+0

@ mjwills在这种情况下,页面显示文件列表。 Scraping页面是指所有的文件描述,图标和链接都存储在列表中,以便将其显示为应用程序界面中的Web内容,并将命令(下一页,上一页,排序依据...)作为Web请求存储在变量中,以便将其作为网页请求稍后。我正在抓取页面来显示Web内容,并在我的应用程序中使用Web链接作为命令。 –

回答

1

我可以在View中的列表顶部或底部显示消息。

如果你能得到的消息时,该列表的顶部或底部,你可以定义一个全局变量所请求的地址和一个变量声明为页面索引。例如,如下所示:http://www.test.com?page= {0}

然后,当您收到“顶部”或“底部”消息时,可以将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的方法,在此方法中,您可以获取下一页的内容。为此,您仍然需要声明两个变量作为请求地址和页面索引。

+0

我更喜欢使用“ISupportIncrementalLoading”接口,它似乎是更专业的方式。 –

相关问题