ปัญหาหลักคือเมื่อใช้ webclent เพื่อรับซอร์สโค้ดของเพจ เมื่อเพจมี datagrid และตัวควบคุมใช้ฟังก์ชันเพจจิ้งของตัวเอง วิธีปกติสามารถรับได้เฉพาะข้อมูลของหน้าแรกและข้อมูลของเพจอื่น ๆ เท่านั้น
หากคุณไม่สามารถรับได้ นี่คือวิธีแก้ปัญหา
วิธีที่หนึ่ง:
แนวคิดหลักคือการใช้ webclient เพื่อโพสต์ข้อมูลไปยังบริการเพื่อรับข้อมูล ที่นี่เราใช้เครื่องมือขนาดเล็กเป็นหลักในการวิเคราะห์องค์ประกอบและกระบวนการทำงานของเพจ ในระหว่างการวิเคราะห์เราพบว่าเมื่อมีการคลิกหน้าถัดไปสาม พารามิเตอร์จะถูกโพสต์
ได้แก่: __EVENTTARGET, __EVENTARGUMENT, __VIEWSTATE ที่นี่ ได้รับพารามิเตอร์ __VIEWSTATE เมื่อเปิดหน้าแรกของข้อมูล __EVENTTARGET คือชื่อของตัวควบคุมที่จะเรียกใช้ (สามารถรับได้ผ่าน httpwatch) __EVENTARGUMENT เป็นพารามิเตอร์เมื่อเรียกใช้เหตุการณ์ รหัสจะเป็นดังนี้:
ผลลัพธ์สตริง ="";
ผลลัพธ์ = this.loadtop (" http://localhost/ProjectInfo.aspx?JOBNO1=2001-09110 ");
string vie = GetTagContent(ผลลัพธ์,"name="__VIEWSTATE" value="","" />");
vie=vie.Replace ("name="__VIEWSTATE" value="","");
vie=vie.Replace ("" />","");
WebClient a = WebClient ใหม่ ();
NameValueCollection na = NameValueCollection ใหม่ ();
na.Add("__EVENTTARGET", "NewHouseGridModule1:ModuleSplitPage:lbnNextPage");
na.Add("__VIEWSTATE",ดู);
ไบต์ [] ss = a.UploadValues(" http://localhost/ProjectInfo.aspx?JOBNO1=2001-09110","POST",na );
การเข้ารหัส encode=การเข้ารหัส .GetEncoding ("utf-8");
ผลลัพธ์ = encode.GetString (ss)
;
ใช้ตัวควบคุม axWebBrowser เพื่อดาวน์โหลดหน้าแรก และจากนั้น เพิ่มรหัสต่อไปนี้ที่ด้านล่าง:
<script language='javascript' type='text/javascript'>__doPostBack('NewHouseGridModule1$ModuleSplitPage$lbnNextPage','');</script>
ที่มา: http://bccu.cnblogs.com/archive/2006/ 05/11/397382.html