问题描述:
页面的导航栏和菜单分别用两个用户控件admin_nav.ascx+admin_menu.ascx实现,分别从数据库中取出对应的数据
在admin_nav.ascx的code中获取NAVID并写入Cookies("NAVID")
this.Response.Cookies["NAVID"].Value = this.Request.QueryString["NAVID"].ToString();
然后在admin_menu.ascx中读取Cookies("NAVID"),读出菜单项问题发生在点击导航栏某项的时候,读出的菜单总是上一次写入的导航栏项下的菜单项,必须二次点击才能显示正确的菜单项,这该如何解决?
页面的导航栏和菜单分别用两个用户控件admin_nav.ascx+admin_menu.ascx实现,分别从数据库中取出对应的数据
在admin_nav.ascx的code中获取NAVID并写入Cookies("NAVID")
this.Response.Cookies["NAVID"].Value = this.Request.QueryString["NAVID"].ToString();
然后在admin_menu.ascx中读取Cookies("NAVID"),读出菜单项问题发生在点击导航栏某项的时候,读出的菜单总是上一次写入的导航栏项下的菜单项,必须二次点击才能显示正确的菜单项,这该如何解决?
string navID = string.Empty;
protected void Page_Load(object sender, EventArgs e)
{
if(!this.Page.IsPostBack)
{
bindNav();
if (this.Request.QueryString["NAVID"] != null && this.Request.QueryString["NAVID"].ToString() != "")
{
this.Response.Cookies["NAVID"].Value = this.Request.QueryString["NAVID"].ToString();
}
}
}
private void bindNav()
{
DataSet dbds = null;
dbds = WebDAO.getNavByDataSet();
DataView dvnav = dbds.Tables[0].DefaultView;
this.rptNav.DataSource = dvnav;
this.rptNav.DataBind();
}
这是admin_menu.ascx的代码
protected void Page_Load(object sender, EventArgs e)
{
if (!this.Page.IsPostBack)
{
bindmenu();
}
} private void bindmenu()
{
string navID = string.Empty; if (this.Request.Cookies["NAVID"] != null && this.Request.Cookies["NAVID"].ToString() != "")
{
navID = this.Request.Cookies["NAVID"].Value.ToString();
DataSet dbds = null;
dbds = WebDAO.getMenuByDataSet(navID);
DataView dvnav = dbds.Tables[0].DefaultView;
this.rptMenu.DataSource = dvnav;
this.rptMenu.DataBind();
}
else
{
DataSet dbds = null;
dbds = WebDAO.GetDefaultMenu();
DataView dvnav = dbds.Tables[0].DefaultView;
this.rptMenu.DataSource = dvnav;
this.rptMenu.DataBind();
}
}然后把两个用户控件插入到母版页admin.master中
加public属性需要每个页面去写入属性值
this.Response.Cookies["NAVID"].Value 这种写法不是好方法