我在页面1上有一个复选框列表和一个按钮,第2页上有一个标签和一个按钮。我要做的是记住在从第2页返回第1页时检查了哪些复选框?我迷失在这里是我的代码。我试过制作一个集合,但那不起作用?或者应该使用数组??
Page1.aspx的
namespace Form
{
public partial class Page2 : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
}
protected void Button1_Click(object sender, EventArgs e)
{
string daysrequested = "";
int count = 0;
foreach (ListItem daysItem in Checkboxlist1.Items)
{
if (daysItem.Selected)
{
daysrequested += " <br /> " + daysItem.Value;
count++;
}
}
Session["daysre"] = daysrequested;
Response.Redirect("Page2.aspx");
}
Page2.aspx
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
namespace Form
{
public partial class Page21 : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
string days = (string)Session["daysre"];
daysLabel.Text = String.Format("You picked" + days);
}
protected void btn_Click(object sender, EventArgs e)
{
Response.Redirect ( "Page1.aspx");
}
}
}
答案 0 :(得分:0)
第1页:
按钮单击会在会话中存储检查列表的选中值 并再分配一个会话(“Page2Visited”)=“1”
在page_load函数
中如果会话(“Page2Visited”)=“1”则
将所有存储的会话值分配为检查列表
否则
将核对清单中的所有值保持为未选中状态
结束如果
清除所有会话
答案 1 :(得分:0)
首先,将所选项目保留在字符串变量中并稍后存储在Session对象中并不是一个好主意。您可以将它们添加到数组或通用列表中。稍后,您可以格式化读取数组项的显示字符串(Page2页面的page_load方法)。
如果您回到第1页,您的商品将不会被选中,因为您还没有处理它。您需要阅读先前设置的Session对象并选择所选项目(在Page1 Page_Load方法内)。
答案 2 :(得分:0)
不要使用string
作为数据类型来保存复选框列表项&#39;价值,而是List<string>
,因为ListItem
的{{1}}属性是Value
,如下所示:
string
现在在第2页的protected void Button1_Click(object sender, EventArgs e)
{
List<string> daysrequested = new List<string>();
foreach (ListItem daysItem in Checkboxlist1.Items)
{
if (daysItem.Selected)
{
daysrequested.Add(daysItem.Value);
}
}
Session["daysre"] = daysrequested;
Response.Redirect("Page2.aspx");
}
中,您可以从Page_Load
中删除列表,如下所示:
Session
最后,要重新检查第1页中的复选框,请在protected void Page_Load(object sender, EventArgs e)
{
List<string> requestedDays = new List<string>();
requestedDays = Session["daysre"] as List<string>;
StringBuilder theRequestedDaysStringBuilder = new StringBuilder();
foreach(string day in requestedDays)
{
theRequestedDaysStringBuilder.Append(day);
}
daysLabel.Text = String.Format("You picked" + theRequestedDaysStringBuilder.ToString());
}
中执行此操作:
Page_Load
答案 3 :(得分:0)
我刚刚制作了一个重现错误的解决方案,复制粘贴了你的整个代码但没有得到任何错误,事实上它的工作正如你想要的那样
所以也许可以检查一下页码 导致您提供的代码
public partial class Page21 : System.Web.UI.Page
在你的Page2上