在页面之间传递多个变量并使用它们

时间:2016-01-13 14:25:02

标签: c# asp.net

我有三个变量,我试图从一个页面传递到另一个页面:两个checboxlists(只是选中的值)和一个DateTime。

我正在获取这样的选中项目(这仅适用于其中一个名为lstUsers的复选框):

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

我如何将其他复选框列表和DateTime传递给" Results.aspx"还有?我已经看过一些不同的例子,比如Server.Transfer,我不确定哪一个是正确的。

要在Results.aspx页面上使用它们,我会这样做:

TextBox

4 个答案:

答案 0 :(得分:3)

您可以在查询字符串中添加任意数量的值。 (虽然查询字符串很长,但Web服务器最终会施加限制。)在这里,您只需附加一个键/值对:

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

只需使用&分隔其他键/值对:

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

如果你确实达到了查询字符串变得非常长并且你基本上有很多数据传递到下一页的那一点,那么你将会看到其他的做法这个。一个简单的替代方案可能是将值存储在会话状态,重定向用户,然后从会话状态中提取值。像这样简单:

Session["cblvalues"] = cblvalues;
Session["moreValues"] = moreValues;
Response.Redirect("Results.aspx");

然后在Results.aspx中,您可以获得值:

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

如果会话值不需要继续携带,您也可以在获得会话值后清除它们:

Session.Remove("cblvalues");

答案 1 :(得分: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

答案 2 :(得分:1)

Response.Redirect(String.Format("Results.aspx?value1={0}&value2={1}&value3={2}", Value1, Value2, Value3));

答案 3 :(得分:1)

如果你真的想用querystring传递它们,那么你也可以包括它们

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