我要尝试从一个页面传递到另一个页面的三个变量:两个checboxlist(仅检查值)和一个DateTime。

我正在得到这样的选中项(这只是这些复选框列表之一,称为lstUsers):

    string cblvalues = "";

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


如何将另一个复选框列表和DateTime传递给“ Results.aspx”?我已经看到了几个不同的示例,例如Server.Transfer,但不确定哪一个是正确的。

为了在Results.aspx页上使用它们,我是否愿意做:

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

最佳答案

您可以在查询字符串上放置任意多的值。 (尽管查询字符串变得很长,但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");

关于c# - 在页面之间传递多个变量并使用它们,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/34769167/

10-14 18:12