2016-01-13 67 views
1

我有三個變量,我試圖從一個頁面傳遞給另一個:兩個checboxlists(只是選中的值)和一個DateTime。在頁面之間傳遞多個變量並使用它們

,我發現了檢查的項目是這樣的(這僅僅是這些checkboxlists被稱爲lstUsers之一):

string cblvalues = ""; 

    foreach (ListItem cbitem in lstUsers.Items) 
    { 
     if (cbitem.Selected) 
     { 
      cblvalues += cbitem.Value + "-"; 
     } 
    } 
    cblvalues = cblvalues.Trim('-'); 
    Response.Redirect("Results.aspx?cblvalues=" + cblvalues); 

我怎麼會通過其他的CheckBoxList和日期時間爲「Results.aspx 「以及?我見過一些不同的例子,比如Server.Transfer,我不確定哪一個是正確的。

而且使用它們的Results.aspx頁面上,將我只是做:

string cblvalues = Request.QueryString["cblvalues"]; 
+0

你是否試圖讓它們在href中的所有查詢字符串? – KratosMafia

回答

3

只要你喜歡上的查詢字符串你可以把儘可能多的價值。 (雖然作爲查詢字符串得到很長網絡服務器最終會加以限制。)在這裏,您只需添加一個鍵/值對:

Response.Redirect("Results.aspx?cblvalues=" + cblvalues); 

只需使用一個&到單獨的附加鍵/值對:

Response.Redirect("Results.aspx?cblvalues=" + cblvalues + "&moreValue=" + moreValues); 

如果你得到的地步查詢字符串變成荒謬長,你基本上數據的大量傳遞到下一個頁面,那麼你正在尋找其他方式來做到這一點。一個簡單的選擇可能是將值存儲在會話狀態中,重定向用戶,然後從會話狀態中提取值。事情如此簡單:

​​3210

然後在Results.aspx你可以得到的值:

var cblValues = Session["cblvalues"]; 
// etc. 

您也可以清除會話值,一旦你得到他們,如果會議沒有需要保留攜帶他們:

Session.Remove("cblvalues"); 
+0

這樣做和D Mayuri回答的String.Format方式有什麼不同嗎? – pfinferno

+0

@pfinferno:不是,這只是使用你已經使用的字符串構建方法。得到的字符串不會有差別,但'strinig.Format()'通常是構建字符串的首選。 – David

2

您可以用& 分隔他們,讓您的片段就會像下面通過查詢字符串多個值: 然後讓cblSecond成爲第二個combobox;

// Building first value here 
foreach (ListItem cbitem in cblSecond.Items) 
    { 
     if (cbitem.Selected) 
     { 
      cblSecondValues += cbitem.Value + "-"; 
     } 
    } 
Response.Redirect("Results.aspx?cblvalues=" + cblvalues + "&cblSecondValues=" + cblSecondValues); 

這樣就可以分別訪問他們像這樣:

string cblvalues = Request.QueryString["cblvalues"];// gives you the first value 
string cblSecondValues= Request.QueryString["cblSecondValues"];// gives you the second value 
1
Response.Redirect(String.Format("Results.aspx?value1={0}&value2={1}&value3={2}", Value1, Value2, Value3)); 
1

如果你真的想使用的查詢字符串,那麼你ahouls包括通過他們米以及

Response.Redirect("Results.aspx?cblvalues=" + cblvalues + "&cblvalues1=" + cblvalues + "&datetimemy=" + datetimevalue); 

查詢字符串的形式像下面

http://server_name/path/aspxfile?field1=value1&field2=value2&field3=value3..&fieldn=valuen 

正如其他答覆中提到,有很多種方法如使用Sessioncookies或者也可以揭露那些控制值的公共屬性然後在下一頁使用Page.PreviousPage屬性,但限制是您必須使用Server.Transfer()Server.Execute()方法中的任一個,而不是Response.Redirect