2017-09-16 14 views
0

상황 : 웹 페이지를 스크랩하는 코드를 만듭니다. 템플리트 10을 기반으로하고 MVVM 및 HTML Agility Pack을 사용하는 UWP 응용 프로그램입니다. 스크래핑 된 페이지는 원본 웹 페이지의 결과 목록에서 앞으로 이동할 수있는 결과 (페이지) 목록입니다. 모두가 스크랩되어 있습니다. 즉, 웹 결과 목록과 웹 명령 목록을 처리 할 수 ​​있습니다.폐치 된 웹 페이지의 다음/선행 페이지를 자동으로로드하는 가장 좋은 방법

요청 : 내가 버튼 "이전 페이지"와 "다음 페이지"를 제거합니다. 아이디어는 현재로드 된 결과 목록 (웹 페이지)의 맨 위 또는 맨 아래로 이동할 경우 자동으로 페이지 또는 뒤로 페이지 전달 요청을 보내야합니다.

주의 : 내가보기 목록의 상단이나 하단에 오전 때 메시지를 표시 할 수입니다. ViewModel에서 목록의 이전 및 다음 페이지를로드하는 더 좋은 방법이 있다는 느낌이 들었습니다.

나는 그것을 수행하는 방법 어떤 제안에 대한 감사합니다. 모든 도로가 로마로 연결되므로 가장 좋은 길을 보여주세요. 사전에 도움을 주셔서 감사합니다.

+1

당신은 당신이'scraped'을 의미합니까'scrape'와'scrapped'에 의해을 의미합니까? – mjwills

+0

한 발 뒤로 물러나서 해결하려는 근본적인 문제를 설명하십시오. 다른 말로하면, ** ** 왜 웹 페이지를 긁어 모으고 있습니까? – mjwills

+0

@ mjwills이 경우 파일 목록을 보여주는 페이지입니다. 스크래핑 페이지는 모든 파일 설명, 아이콘 및 링크가 목록에 저장되어 응용 프로그램 인터페이스 및 명령 (다음 페이지, 이전 페이지, 순서대로, ...)에서 웹 내용으로 표시된다는 것을 웹 요청으로 변수에 저장하여 나중에 웹 요청. 웹 콘텐츠를 표시하고 웹 링크를 응용 프로그램의 명령으로 사용하는 페이지를 고칠 예정입니다. –

답변

1

보기에서 목록의 상단 또는 하단에 메시지를 표시 할 수 있습니다.

목록이 위 또는 아래에있을 때 메시지를받을 수 있으면 전역 변수를 요청 된 주소로 정의하고 변수를 페이지 색인으로 선언 할 수 있습니다. 예 : 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); 
} 

여기에 또 다른 제안이 있습니다. 목록보기에 두 가지 기능을 구현할 수 있습니다. Pull to refreshISupportIncrementalLoading. 목록보기가 맨 위로 스크롤하고 아래로 당길 때 특정 이벤트가 발생합니다.이 경우 이전 페이지의 내용을 가져 오기 위해 HTTP 요청을 보낼 수 있습니다. 목록 뷰가 맨 아래로 스크롤되면 LoadMoreItemsAsync ISupportIncrementalLoading 메서드가 실행되고이 메서드에서 다음 페이지의 콘텐츠를 가져올 수 있습니다. 이 방법으로 요청 주소와 페이지 색인으로 두 개의 변수를 선언해야합니다. `scrap`으로

+0

"ISupportIncrementalLoading"인터페이스를 사용하는 것이 더 전문적인 방법 인 것 같습니다. –