我在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值已经消失。
更新
我希望在重定向后保留值,以便绑定下拉列表选择的值。
请帮忙。
先谢谢你。
答案 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();
}