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

本文关键字:Redirect 之后 保留 Response NET C#- ASP | 更新日期: 2023-09-27 18:28:33

我在ASP.NET c#应用程序中工作。我遇到了一个需要在响应后保留一些值的部分。在不使用额外的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.RRedirect之后保留值id2,我尝试过ViewState,但在重定向之后,它似乎将页面视为新页面,ViewState值消失了。

更新:

我在重定向后保留值的意图是想绑定回dropdownlist选择的值。

请帮忙。

提前谢谢。

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

使用cookie就可以了:

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);
}

使用Session变量即可进行

代码

Session["id2"] = ddl2.SelectedValue;

当你从一个页面重定向到另一个页面时,视图状态对你没有帮助,会话变量可以存储值,直到用户注销网站或会话结束,当你自动返回到你的页面时,viewstate是有用的

如果可能的话,您可以将id2变量附加到querystring中,就像您对id1变量

所做的那样

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

您可以使用SessionQueryString来实现它

通过会话

在你的第一页:

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();
}