2015-04-27 94 views
1

該功能存在於pageB.aspx中,並且參數從pageA傳遞。我無法得到pageB的結果。這裏應該做些什麼。如何從另一頁獲取數據

pageA.aspx.cs:

string URI = Server.MapPath("~/pageB.aspx"); 
NameValueCollection UrlParams = new NameValueCollection(); 
UrlParams.Add("section", "10"); 
UrlParams.Add("position", "20"); 
using (WebClient client = new WebClient()) 
    { 
    byte[] responsebytes = client.UploadValues(URI, "POST", UrlParams); 
    string responsebody = Encoding.UTF8.GetString(responsebytes); 
    } 

當編譯器讀取字節[],存在其中詢問是否應當改變到頁面B製成的對話框。點擊否,沒有任何反應。字符串'responsebody'是空的。

pageB.aspx.cs ::

protected void Page_Load(object sender, EventArgs e) 
    { 
     if (int.TryParse(Request.QueryString["section"], out section) 
       && int.TryParse(Request.QueryString["position"], out position)) 
      { 
       ProcessData(); 
      } 
    } 
private string ProcessData() 
    { 
     string HTMLContent = string.Empty; 
     try 
     { 
      //some code to render the string.     
      return HTMLContent; 
     } 
     catch (Exception ex) 
     { 
      throw ex; 
     } 
    } 

我想從頁面B

回答

2

得到 'HTMLContent' 嘗試使用Session,如果你想通過任何類型的不同頁面之間的數據。

編輯:

由於Session你的情況不會是工作,你也可以嘗試使用WebCache實例來存儲信息,並在其他網頁訪問它。

此鏈接可能有助於在這裏:​​MSDN : WebCache

希望這有助於。

+0

無法爲此項目使用會話變量。 「 – Qwerty

+1

」無法爲此項目使用會話變量。「爲什麼不? – lahsrah

+2

承載相同頁面的多臺服務器。因此建議不要全部通過。 – Qwerty

2

擁有pageA通過web請求「加載」PageB可能不是世界上最好的想法。

我的推理是,我已經看到它在各種項目上完成,你可以遇到各種與請求和權限的路由問題。

實質上,PageA-> PageB請求將被視爲加載PageB的新用戶,cookies,會話變量等將會丟失,除非您明確填充它們。防火牆規則,路由,負載平衡等將採取奇怪的方式。

所有的這些問題可能會導致您的網頁A

的意外行爲

相反:將功能從頁面B的爲服務對象,並直接在需要的地方調用它。

但是:說出於某種原因,您需要通過網絡請求來完成。也許它不總是在同一臺服務器上或其他東西上。

從您的示例代碼看起來像您將PageB視爲web服務。你傳入參數並使用整個響應。因此,如果需要的話可以公開底層代碼,可以將其稱爲ServiceB作爲WebServiceB,然後通過Web請求從PageA引用它。

這將被'允許'作爲WebSerivce的數據封裝使WebB不是它自身的頁面,並且不應該依賴變量,例如會話,cookie等等,這些變量不會明確地傳入。

此外,調用代碼'知道'web服務可能在世界上的任何機器上,因此除非明確通過,否則不會期望它知道事情。

如果您確實將PageB更改爲服務,並且您仍然需要一個可以返回HTML的獨立PageB。只需創建一個在幕後調用ServiceB的新PageB。這允許您將「視圖」邏輯與服務提供的數據/邏輯分開

2

使用HttpContext.Current.Request [「Key」]而不是Request.QueryString [「Key」]。

if (int.TryParse(HttpContext.Current.Request["section"], out section) 
      && int.TryParse(HttpContext.Current.Request["position"], out position)) 
{ 
    ProcessData(); 
}