asp.net中,页面内部跳转(重新加载),ispostback为false,如何保存上一次加载时的值?

主要代码如下

private void Page_Load(object sender, System.EventArgs e)
{
// 在此处放置用户代码以初始化页面
if ( !Page.IsPostBack)
{
Display();
}
}

public void Display()
{
...
lbl_Tree.Text = exam.CreatLeftNavBar(PageID,QuID, c );

}
就是要实现第一次加载时给lbl_Tree赋值,以后加载时lbl_Tree的值不变
但是每次都会重新加载,lbl_Tree的值也会重新调用exam.CreatLeftNavBar函数

你所说的“页面内部跳转”是怎么回事?如果是通过代码重定向到本页,这时候页面重新加载,是不能算成PostBack的,也就是一定会执行Display();

PostBack是指由.net控件在前台的事件引发的那种情况,比如点击.net按钮,执行后台的Button_Click(object sender, EventArgs e),这时候会引起页面重新加载,这种情况才算是PostBack,才能通过 if (!IsPostBack) {} 来避免重新执行页面初始化的那部分代码。追问

谢谢回答,就是重新加载本页面,所以上一次页面内的lbl_Tree控件就为空了
如何才能实现重新加载后的lbl_Tree控件的值不改变?
谢谢!!

追答

你没仔细看我的答复。
你先说清楚你的“重新加载本页面”是什么引发的?是怎么实现的?

追问

通过代码重定向到本页
lbl_Tree实际就是通过调用CreatLeftNavBar拼出一段html代码,随机生成了几个的连接,然后通过点击连接重新跳转到本页。
但是希望第一次随机生成几个连接,之后通过点击跳转到本页的时候,lbl_Tree的值还是之前的值,也就是不再调用CreatLeftNavBar来生成随机的连接,而是保持第一次生成的几个链接不变
不知道这样说清楚了没

追答

这种情况就是我所说的无法用“!IsPostBack“来过滤的。因为你的这种“点击链接重新跳转回本页”不是PostBack,你的这种方式,与“在地址栏重新输入地址访问本页”是一样的,所以你的那个if(!isPostBack)根本起不到你想象的作用。你需要换一种思路,不能用“点击链接重新跳转回本页”的方式。

追问

是的,所以我想问如何保存上一次的lbl_Tree的值?请问有什么好的方法吗?

追答

这得具体问题具体分析了。
我从你的命名方式以及你以上的描述,我估计你是想做那样的效果:页面左侧是树状结构的导航菜单,这个菜单是你在后台生成的。
每点一个菜单,就导航到一个新的内容页面。但是左侧的树状菜单不能变。
如果我以上的猜测没有错,你应该采取框架结构来设计你的页面,让左侧保持不刷新,右侧刷新。这样也就不存在保存上一次lbl_Tree的值的问题了。

话说回来,如果你的lbl_Tree是通过后台产生的,而且是随机的,要想让它不变,只有两个办法:
1、局部不刷新;(局部不刷新除了用框架,还可以用AJAX,看具体情况)
2、全部刷新,但是lbl_Tree的值必须通过form submit或者querrystring传递给后台,后台接收后再显示出来。如果用这种方式,那就是判断:如果没有接收到数据,那么就是第一次进入该页面,用程序生成lbl_Tree的值;如果接收到数据,就不调用产生lbl_Tree的那段代码。

温馨提示:内容为网友见解,仅供参考
无其他回答

asp.net中,页面内部跳转(重新加载),ispostback为false,如何保存上一...
你所说的“页面内部跳转”是怎么回事?如果是通过代码重定向到本页,这时候页面重新加载,是不能算成PostBack的,也就是一定会执行Display();PostBack是指由.net控件在前台的事件引发的那种情况,比如点击.net按钮,执行后台的Button_Click(object sender, EventArgs e),这时候会引起页面重新加载,这种...

asp.net中我在页面加载时给texbox赋值、后来我一个修改按钮获取texbox...
在 Page_Load事件中加上,应该就可以了 if (!IsPostBack){ \/\/代码 }

asp.net 为什么 ispostback false
IsPostBack 是回传的意思 !IsPostBack 是非回传的意思 就是说只有当IsPostBack是false的时候 你的if (!IsPostBack) 条件才能成立 换个形式说 如果你是回传的页面, IsPostBack的返回值是true !IsPostBack的值就是false if (!IsPostBack) 条件不成立 不执行里面的代码 ...

ispostback是什么意思?
ispostback是ASP.NET页面中的一个属性,用于确定页面是首次加载还是回传(postback)。在页面首次加载时,ispostback属性的值为false,当页面回传时,该属性的值为true。因此,我们可以在不同的条件下执行不同的代码,以达到不同的效果。ispostback属性对于页面的效率和用户体验都有一定的影响。当页面回传时...

asp.NET中,密码输入框一刷新后输入的密码就清空,但刷新后我想保留刷新...
点按钮“刷新”:实质是在刷新之前已经提交了form ,对于一般的textbox 只需在Page_Load里重新赋值就OK了如:textbox.Text=textbox.Text;但是对于密码框,这样是不行的 必须用textbox.Attributes["value"] = textbox.Text来重新赋值 注意不要写在 if (!IsPostBack)里 如果是单纯的刷新,这个就...

关于IsPostBack(asp.net)
当页面是第一次打开时其值为False,若当前页面为一个提交后的页面其值为True.通俗的说就是当你的页面第一次登录时会调用if(!IsPostBack){。。。}中的语句,而在此页面未被关闭之前再次进入该页面时(例如,用back<-返回该页面则{}中的语句不会再被调用;系统的说是是否将页面再重新回传给web服务...

ASP.NET中的IsPostBack是什么意思?怎么用?
IsPostBack是Page类有一个bool类型的属性,用来判断针对当前Form的请求是第一次还是非第一次请求。当IsPostBack=true时表示非第一次请求,我们称为PostBack,当IsPostBack=false时表示第一次请求。对于我们自己使用WebForm进行开发时,经常会在Page_Load中对IsPostBack进行判断,因为第一次请求的时候会执行Page...

asp.net服务器控件刷新无法保存住值怎么解决?
asp.net的webform中 使用 ViewState可以实现保留状态数据的功能(实际就是在页面中加入Hidden来实现), 你可以在 2.aspx页面Page_Load()中写 if(!IsPostBack){ ViewState["url"] = Request.QueryString["你的参数名"]}; 这样你点击按钮回传后,可以用ViewState["url"]取到 ...

IsPostBack具体功能?
2 IsPostBack结论本人对.Net的源代码中相关的处理进行的分析得到如下的结论:结论① 对于使用Server.Transfer进行迁移时迁移到的页面其IsPostBack=false。结论② Post方式如果Request中没有请求值,即Request.Form =null则IsPostBack=false;Get方式如果Request中没有请求值,即Request.QueryString =null则IsPostBack=false。结论...

asp.net(c#)中IsPostBack是什么意思
IsPostBack = true 表明这次请求是回传,即:该页面不是第一次加载 IsPostBack = false 表明这次请求不是回传,即:该页面第一次加载

相似回答