ASP.NET C# - 如何在Response.Redirect之后保留值

时间:2012-03-21 07:15:21

标签: c# asp.net

我在ASP.NET c#应用程序中工作。 我来到了一个部分,我需要在response.redirect之后保留一些值,而不使用额外的QueryString或Session ,因为Session或多或少可能会给服务器的性能带来负担,即使只是一个很小的值。

以下是我的代码片段:

 protected void ddl_SelectedIndexChanged(object sender, EventArgs e)
 {
string id = ddl.SelectedValue;
string id2 = ddl2.SelectedValue;
Response.Redirect("http://sharepoint2007/sites/home/Lists/CustomList/DispForm.aspx?ID=" + id);
 }

我想在Response.Redirect之后保留值id2,我已经尝试了ViewState但看起来像重定向之后,它将页面视为新页面并且ViewState值已经消失。

更新

我希望在重定向后保留值,以便绑定下拉列表选择的值。

请帮忙。

先谢谢你。

4 个答案:

答案 0 :(得分:3)

利用会话变量将为您做到

代码

Session["id2"] = ddl2.SelectedValue;

当您从一个页面重定向到另一个页面时,viewstate无法帮助您,Session varialbe可以存储值直到用户注销站点或直到会话结束,ViewState在您对页面进行自动回复时很有帮助

如果可能,您只能在id1变量

中附加查询字符串中的id2变量

答案 1 :(得分:3)

使用cookies可以解决问题:

protected void ddl_SelectedIndexChanged(object sender, EventArgs e)
{
    string id = ddl.SelectedValue;
    string id2 = ddl2.SelectedValue;
    HttpCookie cookie = new HttpCookie("SecondId", id2);
    Response.Cookies.Add(cookie);
    Response.Redirect("http://sharepoint2007/sites/home/Lists/CustomList/DispForm.aspx?ID=" + id);
}

protected void OnLoad(object sender, EventArgs e)
{
    string id2 = Request.Cookies["SecondId"];
    //send a cookie with an expiration date in the past so the browser deletes the other one
    //you don't want the cookie appearing multiple times on your server
    HttpCookie clearCookie = new HttpCookie("SecondId", null);
    clearCookie.Expires = DateTime.Now.AddDays(-1);
    Response.Cookies.Add(clearCookie);
}

答案 2 :(得分:2)

除了会话,查询字符串,您还可以使用cookie,应用程序变量和数据库来保存您的数据。

答案 3 :(得分:1)

您可以使用会话 QueryString

来实现

通过会话

在您的第一页:

Session["abc"] = ddlitem;

然后在下一页中使用以下方式访问会话:

protected void Page_Load(object sender, EventArgs e)
{
    String cart= String.Empty;
    if(!String.IsNullOrEmpty(Session["abc"].ToString()))
    {
        xyz= Session["abc"].ToString();
        // do Something();
    }
    else
    {
        // do Something();
    }
}

-

通过 QueryString

在您的第一页:

private void button1_Click(object sender, EventArgs e)
{
    String abc= "ddlitem";
    Response.Redirect("Checkout.aspx?ddlitemonnextpage" + abc)
}

在你的第二页:

protected void Page_Load(object sender, EventArgs e)
{
    string xyz= Request.QueryString["ddlitemonnextpage"].ToString();
    // do Something();
}